Bug 146156 - JetStream should include a JavaScript version of the CDx real-time benchmark
Summary: JetStream should include a JavaScript version of the CDx real-time benchmark
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Tools / Tests (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Filip Pizlo
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2015-06-19 13:16 PDT by Filip Pizlo
Modified: 2015-06-19 16:51 PDT (History)
2 users (show)

See Also:


Attachments
the patch (84.49 KB, patch)
2015-06-19 13:32 PDT, Filip Pizlo
ggaren: review+
Details | Formatted Diff | Diff
patch for landing (84.61 KB, patch)
2015-06-19 16:27 PDT, Filip Pizlo
no flags Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Filip Pizlo 2015-06-19 13:16:28 PDT
JetStream tries to emphasize latency.  Our current latency testing story involves code load tests, short-running tests that offer only small opportunities for warm-up, and tests that measure performance above the 95th percentile.

In academia, there is a test that was used a lot for Real Time Java.  It's called CDx.  It's a simple aircraft collision detection simulation.  It was used in my dissertation and some of my academic papers, and I was one of the co-authors of this original test.  Here's the benchmark URL:

https://www.cs.purdue.edu/sss/projects/cdx/

Here are some of the publications based on this benchmark:

https://www.cs.purdue.edu/sss/projects/cdx/publications/

CDx is meant to be easy to implement in different languages.  It has a C implementation, for example.  We should port it to JavaScript, add it to JetStream as a 95th percentile worst-case test, and retire whatever SunSpider test is least useful (probably cordic, since it's so tiny).
Comment 1 Filip Pizlo 2015-06-19 13:32:18 PDT
Created attachment 255221 [details]
the patch
Comment 2 WebKit Commit Bot 2015-06-19 13:35:10 PDT
Attachment 255221 [details] did not pass style-queue:


ERROR: PerformanceTests/JetStream/cdjs/motion.js:61:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:62:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:63:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:64:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:65:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:66:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:67:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:68:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:69:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:70:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:71:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:72:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:73:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:74:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:75:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:76:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:77:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:78:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:79:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:80:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:81:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/motion.js:82:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/reduce_collision_set.js:103:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/reduce_collision_set.js:105:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/reduce_collision_set.js:106:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/reduce_collision_set.js:108:  Line contains tab character.  [whitespace/tab] [5]
ERROR: PerformanceTests/JetStream/cdjs/reduce_collision_set.js:109:  Line contains tab character.  [whitespace/tab] [5]
Total errors found: 27 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.
Comment 3 Geoffrey Garen 2015-06-19 13:41:45 PDT
Comment on attachment 255221 [details]
the patch

View in context: https://bugs.webkit.org/attachment.cgi?id=255221&action=review

r=me

> PerformanceTests/JetStream/cdjs/motion.js:94
> +        var b = 2 * init1.minus(init2).dot(vec1.minus(vec2));
> +        
> +        // c = -r^2 + (I2 - I1)^T * (I2 - I1)
> +        var c = -radius * radius + init2.minus(init1).squaredMagnitude();
> +        
> +        var discr = b * b - 4 * a * c;
> +        if (discr < 0)
> +            return null;
> +        
> +        var v1 = (-b - Math.sqrt(discr)) / (2 * a);
> +        var v2 = (-b + Math.sqrt(discr)) / (2 * a);

This indentation looks off.
Comment 4 Filip Pizlo 2015-06-19 16:27:26 PDT
Created attachment 255244 [details]
patch for landing

I think I got rid of all of those tabs that were messing up indentation.
Comment 5 Filip Pizlo 2015-06-19 16:51:41 PDT
Landed in http://trac.webkit.org/changeset/185780