Changeset 190541 in webkit


Ignore:
Timestamp:
Oct 2, 2015 8:10:13 PM (9 years ago)
Author:
commit-queue@webkit.org
Message:

Add shared code for a new a graphics benchmark
https://bugs.webkit.org/show_bug.cgi?id=149691

Patch by Said Abou-Hallawa <sabouhallawa@apple.com> on 2015-10-02
Reviewed by Ryosuke Niwa.

This set of classes will be shared and used by the tests and the runner
of a new graphics benchmark.

  • Animometer/resources: Added.
  • Animometer/resources/algorithm.js: Added.

(Array.prototype.swap): Swaps two elements in an array.
(Heap): Binary Min/Max Heap object
(Heap.prototype._parentIndex): Given the child node index, it returns the parent index.
(Heap.prototype._leftIndex): Given the parent node index, it returns the left node index.
(Heap.prototype._rightIndex): Given the parent node index, it returns the right node index.
(Heap.prototype._childIndex): Given the parent node index, it returns the child index that may violate the heap property.
(Heap.prototype.init): Initializes the heap state.
(Heap.prototype.top): Returns the value stored at the top of the heap.
(Heap.prototype.push): Pushes a new node at the top of the heap.
(Heap.prototype.pop): Extracts the top node of the heap.
(Heap.prototype._bubble): Fixes the heap property by moving upward.
(Heap.prototype._sink): Fixes the heap property by moving downward.
(Heap.prototype.str): Prints the nodes of the heap to a string.
(Heap.prototype.values): Returns the last "size" heap elements values.

(Algorithm.createMinHeap): Creates a size-bounded min-heap object.
(Algorithm.createMaxHeap): Creates a size-bounded max-heap object.

  • Animometer/resources/extensions.js: Added.

(Point): Point object but can be used as size also.
(Point.pointOnCircle): Given, the radius of the circle and the angle of the point, it returns a point object.
(Point.pointOnEllipse): Given, the radiuses of the ellipse and the angle of the point, it returns a point object.
(Point.prototype.get width): Should be called when the point is used as size.
(Point.prototype.get height): Should be called when the point is used as size.
(Point.prototype.get center): Should be called when the point is used as size.
(Point.prototype.add): Returns a new point = this + other.
(Point.prototype.subtract): Returns a new point = this - other.
(Point.prototype.multiply): Returns a new point = this * other.
(Point.prototype.move): Moves the point in a given direction, velocity, time period.

(Insets): Represents borders of a container.
(Insets.prototype.get width): Returns left + right.
(Insets.prototype.get height): Returns top + bottom.

(SimplePromise):
(SimplePromise.prototype.then):
(SimplePromise.prototype.resolve):
Moved from Animometer/runner/resources/benchmark-runner.js since tests also need it.

(Options): Benchmark running options as they are set by the user.

(ProgressBar): Manages a progress bar element. The progress bar is divided into equal length ranges.
(ProgressBar.prototype._progressToPercent): Converts the progress into a percentage.
(ProgressBar.prototype.incRange): Moves to the next range (a range is the running time of a single test).
(ProgressBar.prototype.setPos): Draws the current progress in the current range.

(RecordTable): Shows the results of running a benchmark in a tabular form.
(RecordTable.prototype.clear): Clears the results table.
(RecordTable.prototype._showTitles): Shows the header titles and appends the sub-titles to a queue.
(RecordTable.prototype._showHeader): Shows the table header titles.
(RecordTable.prototype._showEmpty): Shows an empty table cell.
(RecordTable.prototype._showValue): Shows a number value in the results table.
(RecordTable.prototype._showSamples): Shows a button for the sampled data graph.
(RecordTable.prototype._showTest): Shows the results of a single test.
(RecordTable.prototype._showSuite): Shows the results of a single suite.
(RecordTable.prototype.showRecord): Shows a single iteration for a single test.
(RecordTable.prototype.showIterations): Shows the results of all the suites of the iterations.

  • Animometer/resources/sampler.js: Added.

(Statistics.sampleMean): Returns the sample mean.
(Statistics.unbiasedSampleStandardDeviation): Returns the unbiased sample variance (i.e. with Bessel's correction)
(Statistics.geometricMean): Returns the geometric mean.

(Experiment): Represents a sampling experiment.
(Experiment.prototype._init): Called when the object is created and when startSampling() is called.
(Experiment.prototype.startSampling): Called after warmup period. Restarts collecting sampled data points.
(Experiment.prototype.sample): Add a new data point.
(Experiment.prototype.mean): Returns the sample mean for the current sampled data points.
(Experiment.prototype.standardDeviation): Returns the sample standard deviation for the current sampled data points.
(Experiment.prototype.percentage): Returns the percentage of the standard deviation divided to the mean.
(Experiment.prototype.confidenceIntervalDelta): Calculates the confidence delta for the current sampled data given a confidence level.
(Experiment.prototype.concern): Returns the average of the worst given percentage from the sampled data.
(Experiment.prototype.score): Returns a score for the sampled data. It is the geometric mean of sampleMean and concern.

(Sampler): Represents a compound experiment. It manages sampling multiple data points at the same time offset.
(Sampler.prototype.startSampling): Called after warming up period. Restarts collecting sampled data points.
(Sampler.prototype.sample): Add a new data vector at a given time offset.

Location:
trunk/PerformanceTests
Files:
4 added
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/PerformanceTests/ChangeLog

    r190526 r190541  
     12015-10-02  Said Abou-Hallawa  <sabouhallawa@apple.com>
     2
     3        Add shared code for a new a graphics benchmark
     4        https://bugs.webkit.org/show_bug.cgi?id=149691
     5
     6        Reviewed by Ryosuke Niwa.
     7
     8        This set of classes will be shared and used by the tests and the runner
     9        of a new graphics benchmark.
     10
     11        * Animometer/resources: Added.
     12        * Animometer/resources/algorithm.js: Added.
     13        (Array.prototype.swap): Swaps two elements in an array.
     14        (Heap): Binary Min/Max Heap object
     15        (Heap.prototype._parentIndex): Given the child node index, it returns the parent index.
     16        (Heap.prototype._leftIndex): Given the parent node index, it returns the left node index.
     17        (Heap.prototype._rightIndex): Given the parent node index, it returns the right node index.
     18        (Heap.prototype._childIndex): Given the parent node index, it returns the child index that may violate the heap property.
     19        (Heap.prototype.init): Initializes the heap state.
     20        (Heap.prototype.top): Returns the value stored at the top of the heap.
     21        (Heap.prototype.push): Pushes a new node at the top of the heap.
     22        (Heap.prototype.pop): Extracts the top node of the heap.
     23        (Heap.prototype._bubble): Fixes the heap property by moving upward.
     24        (Heap.prototype._sink): Fixes the heap property by moving downward.
     25        (Heap.prototype.str): Prints the nodes of the heap to a string.
     26        (Heap.prototype.values): Returns the last "size" heap elements values.
     27
     28        (Algorithm.createMinHeap): Creates a size-bounded min-heap object.
     29        (Algorithm.createMaxHeap): Creates a size-bounded max-heap object.
     30       
     31        * Animometer/resources/extensions.js: Added.
     32        (Point): Point object but can be used as size also.
     33        (Point.pointOnCircle): Given, the radius of the circle and the angle of the point, it returns a point object.
     34        (Point.pointOnEllipse): Given, the radiuses of the ellipse and the angle of the point, it returns a point object.
     35        (Point.prototype.get width): Should be called when the point is used as size.
     36        (Point.prototype.get height): Should be called when the point is used as size.
     37        (Point.prototype.get center): Should be called when the point is used as size.
     38        (Point.prototype.add): Returns a new point = this + other.
     39        (Point.prototype.subtract): Returns a new point = this - other.
     40        (Point.prototype.multiply): Returns a new point = this * other.
     41        (Point.prototype.move): Moves the point in a given direction, velocity, time period.
     42
     43        (Insets): Represents borders of a container.
     44        (Insets.prototype.get width): Returns left + right.
     45        (Insets.prototype.get height): Returns top + bottom.
     46
     47        (SimplePromise):
     48        (SimplePromise.prototype.then):
     49        (SimplePromise.prototype.resolve):
     50        Moved from Animometer/runner/resources/benchmark-runner.js since tests also need it.
     51
     52        (Options): Benchmark running options as they are set by the user.
     53
     54        (ProgressBar): Manages a progress bar element. The progress bar is divided into equal length ranges.
     55        (ProgressBar.prototype._progressToPercent): Converts the progress into a percentage.
     56        (ProgressBar.prototype.incRange): Moves to the next range (a range is the running time of a single test).
     57        (ProgressBar.prototype.setPos): Draws the current progress in the current range.
     58
     59        (RecordTable): Shows the results of running a benchmark in a tabular form.
     60        (RecordTable.prototype.clear): Clears the results table.
     61        (RecordTable.prototype._showTitles): Shows the header titles and appends the sub-titles to a queue.
     62        (RecordTable.prototype._showHeader): Shows the table header titles.
     63        (RecordTable.prototype._showEmpty): Shows an empty table cell.
     64        (RecordTable.prototype._showValue): Shows a number value in the results table.
     65        (RecordTable.prototype._showSamples): Shows a button for the sampled data graph.
     66        (RecordTable.prototype._showTest): Shows the results of a single test.
     67        (RecordTable.prototype._showSuite): Shows the results of a single suite.
     68        (RecordTable.prototype.showRecord): Shows a single iteration for a single test.
     69        (RecordTable.prototype.showIterations): Shows the results of all the suites of the iterations.
     70
     71        * Animometer/resources/sampler.js: Added.
     72        (Statistics.sampleMean): Returns the sample mean.
     73        (Statistics.unbiasedSampleStandardDeviation): Returns the unbiased sample variance (i.e. with Bessel's correction)
     74        (Statistics.geometricMean): Returns the geometric mean.
     75
     76        (Experiment): Represents a sampling experiment.
     77        (Experiment.prototype._init): Called when the object is created and when startSampling() is called.
     78        (Experiment.prototype.startSampling): Called after warmup period. Restarts collecting sampled data points.
     79        (Experiment.prototype.sample): Add a new data point.
     80        (Experiment.prototype.mean): Returns the sample mean for the current sampled data points.
     81        (Experiment.prototype.standardDeviation): Returns the sample standard deviation for the current sampled data points.
     82        (Experiment.prototype.percentage): Returns the percentage of the standard deviation divided to the mean.
     83        (Experiment.prototype.confidenceIntervalDelta): Calculates the confidence delta for the current sampled data given a confidence level.
     84        (Experiment.prototype.concern): Returns the average of the worst given percentage from the sampled data.
     85        (Experiment.prototype.score): Returns a score for the sampled data. It is the geometric mean of sampleMean and concern.
     86
     87        (Sampler): Represents a compound experiment. It manages sampling multiple data points at the same time offset.
     88        (Sampler.prototype.startSampling): Called after warming up period. Restarts collecting sampled data points.
     89        (Sampler.prototype.sample): Add a new data vector at a given time offset.
     90       
    1912015-10-02  Said Abou-Hallawa  <sabouhallawa@apple.com>
    292
Note: See TracChangeset for help on using the changeset viewer.