Verzeichnisstruktur phpBB-3.2.0


Veröffentlicht
06.01.2017

So funktioniert es


Auf das letzte Element klicken. Dies geht jeweils ein Schritt zurück

Auf das Icon klicken, dies öffnet das Verzeichnis. Nochmal klicken schließt das Verzeichnis.
Auf den Verzeichnisnamen klicken, dies zeigt nur das Verzeichnis mit Inhalt an

      (Beispiel Datei-Icons)

Auf das Icon klicken um den Quellcode anzuzeigen

BaseLazyLoadingPerformanceTest.php

Zuletzt modifiziert: 09.10.2024, 12:58 - Dateigröße: 6.70 KiB


 001  <?php
 002  /*
 003   * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
 004   * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
 005   * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
 006   * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
 007   * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
 008   * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 009   * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 010   * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 011   * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 012   * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 013   * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 014   *
 015   * This software consists of voluntary contributions made by many individuals
 016   * and is licensed under the MIT license.
 017   */
 018   
 019  namespace ProxyManagerTest\Functional;
 020   
 021  /**
 022   * Base performance test logic for lazy loading proxies
 023   *
 024   * @author Marco Pivetta <ocramius@gmail.com>
 025   * @license MIT
 026   *
 027   * @group Performance
 028   * @coversNothing
 029   */
 030  abstract class BaseLazyLoadingPerformanceTest extends BasePerformanceTest
 031  {
 032      /**
 033       * @param string                                     $className
 034       * @param object[]                                   $instances
 035       * @param \ProxyManager\Proxy\LazyLoadingInterface[] $proxies
 036       * @param string                                     $methodName
 037       * @param array                                      $parameters
 038       */
 039      protected function profileMethodAccess($className, array $instances, array $proxies, $methodName, array $parameters)
 040      {
 041          $iterations = count($instances);
 042   
 043          $this->startCapturing();
 044   
 045          foreach ($instances as $instance) {
 046              call_user_func_array(array($instance, $methodName), $parameters);
 047          }
 048   
 049          $baseProfile = $this->endCapturing(
 050              $iterations . ' calls to ' . $className . '#' . $methodName . ': %fms / %fKb'
 051          );
 052          $this->startCapturing();
 053   
 054          foreach ($proxies as $proxy) {
 055              call_user_func_array(array($proxy, $methodName), $parameters);
 056          }
 057   
 058          $proxyProfile = $this->endCapturing(
 059              $iterations . ' calls to proxied ' . $className . '#' . $methodName . ': %fms / %fKb'
 060          );
 061          $this->compareProfile($baseProfile, $proxyProfile);
 062      }
 063   
 064      /**
 065       * @param string                                     $className
 066       * @param object[]                                   $instances
 067       * @param \ProxyManager\Proxy\LazyLoadingInterface[] $proxies
 068       * @param string                                     $property
 069       */
 070      protected function profilePropertyWrites($className, array $instances, array $proxies, $property)
 071      {
 072          $iterations = count($instances);
 073   
 074          $this->startCapturing();
 075   
 076          foreach ($instances as $instance) {
 077              $instance->$property = 'foo';
 078          }
 079   
 080          $baseProfile = $this->endCapturing(
 081              $iterations . ' writes of ' . $className . '::' . $property . ': %fms / %fKb'
 082          );
 083          $this->startCapturing();
 084   
 085          foreach ($proxies as $proxy) {
 086              $proxy->$property = 'foo';
 087          }
 088   
 089          $proxyProfile = $this->endCapturing(
 090              $iterations . ' writes of proxied ' . $className . '::' . $property . ': %fms / %fKb'
 091          );
 092          $this->compareProfile($baseProfile, $proxyProfile);
 093      }
 094   
 095      /**
 096       * @param string                                     $className
 097       * @param object[]                                   $instances
 098       * @param \ProxyManager\Proxy\LazyLoadingInterface[] $proxies
 099       * @param string                                     $property
 100       */
 101      protected function profilePropertyReads($className, array $instances, array $proxies, $property)
 102      {
 103          $iterations = count($instances);
 104   
 105          $this->startCapturing();
 106   
 107          foreach ($instances as $instance) {
 108              $instance->$property;
 109          }
 110   
 111          $baseProfile = $this->endCapturing(
 112              $iterations . ' reads of ' . $className . '::' . $property . ': %fms / %fKb'
 113          );
 114          $this->startCapturing();
 115   
 116          foreach ($proxies as $proxy) {
 117              $proxy->$property;
 118          }
 119   
 120          $proxyProfile = $this->endCapturing(
 121              $iterations . ' reads of proxied ' . $className . '::' . $property . ': %fms / %fKb'
 122          );
 123          $this->compareProfile($baseProfile, $proxyProfile);
 124      }
 125   
 126      /**
 127       * @param string                                     $className
 128       * @param object[]                                   $instances
 129       * @param \ProxyManager\Proxy\LazyLoadingInterface[] $proxies
 130       * @param string                                     $property
 131       */
 132      protected function profilePropertyIsset($className, array $instances, array $proxies, $property)
 133      {
 134          $iterations = count($instances);
 135   
 136          $this->startCapturing();
 137   
 138          foreach ($instances as $instance) {
 139              isset($instance->$property);
 140          }
 141   
 142          $baseProfile = $this->endCapturing(
 143              $iterations . ' isset of ' . $className . '::' . $property . ': %fms / %fKb'
 144          );
 145          $this->startCapturing();
 146   
 147          foreach ($proxies as $proxy) {
 148              isset($proxy->$property);
 149          }
 150   
 151          $proxyProfile = $this->endCapturing(
 152              $iterations . ' isset of proxied ' . $className . '::' . $property . ': %fms / %fKb'
 153          );
 154          $this->compareProfile($baseProfile, $proxyProfile);
 155      }
 156   
 157      /**
 158       * @param string                                     $className
 159       * @param object[]                                   $instances
 160       * @param \ProxyManager\Proxy\LazyLoadingInterface[] $proxies
 161       * @param string                                     $property
 162       */
 163      protected function profilePropertyUnset($className, array $instances, array $proxies, $property)
 164      {
 165          $iterations = count($instances);
 166   
 167          $this->startCapturing();
 168   
 169          foreach ($instances as $instance) {
 170              unset($instance->$property);
 171          }
 172   
 173          $baseProfile = $this->endCapturing(
 174              $iterations . ' unset of ' . $className . '::' . $property . ': %fms / %fKb'
 175          );
 176          $this->startCapturing();
 177   
 178          foreach ($proxies as $proxy) {
 179              unset($proxy->$property);
 180          }
 181   
 182          $proxyProfile = $this->endCapturing(
 183              $iterations . ' unset of proxied ' . $className . '::' . $property . ': %fms / %fKb'
 184          );
 185          $this->compareProfile($baseProfile, $proxyProfile);
 186      }
 187   
 188      /**
 189       * Generates a proxy for the given class name, and retrieves its class name
 190       *
 191       * @param string $parentClassName
 192       *
 193       * @return string
 194       */
 195      abstract protected function generateProxy($parentClassName);
 196  }
 197