Giter VIP home page Giter VIP logo

robohornet's Introduction

Robohornet was an alternative browser benchmark. It had flaws and is abandoned.

It's available to run at http://www.robohornet.org, but we do not recommend using the results for anything other than entertainment purposes.

robohornet's People

Contributors

eaenet avatar igrigorik avatar jkomoros avatar maettig avatar paulirish avatar paullewis avatar sindresorhus avatar tlrobinson avatar tonygentilcore avatar ziegs avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

robohornet's Issues

Tests with large numbers of iterations with simple computations should take measures to remain 'real'

Some of the tests (for example the ES5 getters/setters test) feature simple for loops that do the same computation repeatedly with a constant number of iterations. Some of them don't even use the result.

Loops like this can be trivially optimized down to a no-op by a runtime. You should either replace them with 'real' code that uses the result, or take steps to prevent optimization (for example, a try/finally block wrapping each iteration would prevent optimization in current revs of V8 and SpiderMonkey, so optimizations wouldn't occur across that boundary. You'd need to wrap with functions though, and it'd add a lot of overhead...)

2DCanvas Draw test gets stuck in IE9

The test appears to make progress, but then after a few seconds gets stuck and no progress can be observed for minutes. When you close the window, the main tab with RoboHornet in it spontaneously refreshes, saying "A problem with this page caused Internet Explorer to close and reopen the tab."

Running the test in standalone reports that it completes successfully in 2 ms.

No script errors are observed.

Ensure IE is running in its edge compat modes

Ensure IE is running in its edge compat modes. I noticed some tests have failed in the past because API expected to exist did not, because IE was running in an older compat mode. We should ensure it's running the latest.

Show progress indicator on running tests

Often when running some of the longer-running tests, it can be difficult to distinguish whether a test is doing useful work or is stuck. Some kind of progress indicator would make that easier to distinguish, although we'd have to be carful not to influence the performance of the tests unnecessarily.

The test popup is off screen in Chrome on Windows 7

Potentially on other browser/platform combinations as well.

Chrome on Mac will not allow a popup window to go even partially off-screen; it appears to have no such restrictions on Win 7.

Ensuring that the test window is fully visible is important for accurate performance testing.

Integrate with Browserscope

At the completion of the test we should upload the results to browserscope so that they can be compared to other folks over time.

Figuring out how to handle new versions of the suite in a way that makes sense with historical values will be a challenge.

Skip a test if the window is closed by user

If the test window is closed by the user, we should note the benchmark's status as "Closed by user" and move on to the next benchmark, treating it like a failed benchmark.

This is hard to do correctly; a naive implementation apparently had a race condition between the parent and child windows.

The best way to do this is probably to have the parent test runner poll for the existence of the window every couple of seconds. We would have to be careful not to have it poll too often or it could effect the score.

First test's popup should be blocked if any of them will be

Currently the first test is loaded in response to a user action so it's not blocked, but later ones will be. This leads to someone thinking it's working, then leaving while the tests run, only to come back and find only the first ran.

SVGResize test takes too long to stabilize in Firefox.

I haven't had the chance to dig into the code, but something is causing the SVG resize test to take ~15 minutes or more to finish, which is waaaaaaaaaay to long.

Is there something in the code that waits for it to stabilize or smth that would cause the test to take so long to finish?

SVG Resize Test (#18) Needs to be broken up

Original title: Firefox: SVG Resize leads to unresponsive script warning, never completes

The test takes a long time; after awhile the unresponsive script dialog shows up. Clicking wait leads to Firefox just stalling forever until you force close it.

Descendant selector

![](http://robohornet.org/issue/12/badge)

The descendant selector in CSS can be slow, but it is very useful and should be faster.

David Hyatt (long ago) and others (more recently) have reported that css's descendant selectors are among the slowest, yet they remain some of the most popular selectors used by authors. Webkit's Antti has proved that there are huge optimization gains to be had here.

2D Canvas Draw crashes Safari

Version 6.0 on OS X 10.7.4.

Safari crashes hard, bringing down the entire browser. Before it would just do a crash and refresh.

Others have reported this test works on Safari 6.

Inform the user when a popup is blocked

To run the suite you need to whitelist robohornet.org with your popup blocker. Ideally when we detect that popups are blocked, we'd let the users know immediately and instruct them how to fix it.

Safari: CanvasDraw2D spontaneously refreshes when done

Only in Safari, when the Safari 2D test is finished, the popup spontaneously refreshes, running in standalone mode. When it finishes, the main window doesn't notice, so the whole harness stops moving forward to the next test.

Arguments array (varargs)

![](http://robohornet.org/issue/21/badge)

Creating varargs javascript functions (which requires accessing the arguments array) can be extremely slow.

The instantiation of the arguments array is slow. It makes functions with variable # of arguments inefficient. Example: goog.dom.classes.add would be twice as fast in Chrome if it expected a single className argument.

2DCanvasDraw benchmark never completes on Firefox

It continues to run, but often shows a "Not responding" warning in the titlebar that stays for many seconds and then goes away. Firefox's "unresponsive script" warning does not show. After 15 minutes, the test had still not completed.

Mobile browser compatibility

Because of the use of popup windows, Robohornet's tests are blocked on mobile safari. So right now we can't get results there.

It's possible to get results on Chrome on Android, once you allow the popups.

FF Mobile, Opera Mobile untested so far.

Reflows take a long time

![](http://robohornet.org/issue/30/badge)

Accessing certain DOM properties (like offsetTop, offsetLeft, offsetWidth, and offsetHeight) can cause a synchronous reflow of the document, often with severe performance implications. The best practice is to batch up these property reads and sets to minimize the number of reflows that must occur, but in many cases it's just not possible to avoid synchronous reflows. Reflow performance is critical and should be improved.

Raw javascript performance - calculating primes

Pure math is far slower than compiled C/C++

Google Maps:

At some points we do significant amounts of pure math-based operations, such as determining as subset of lines that don't intersect for label placement. This is essentially pure math as it doesn't depend on the DOM, browser, or any significant features of JavaScript. That is, we could write a C++ program to compute the same results with essentially a list of numbers as input and output, and it would be much faster. It seems there are inefficiencies in how JS technically should be executed that make it so much slower, even though we could get the same results in our particular case if they were ignored.

![](http://robohornet.org/issue/20/badge)

Raw javascript performance can be the bottleneck in certain applications.

Canvas clearing test is a complete fantasy

The canvas clearing test is a complete fantasy as long as it never actually draws anything. It's trivial to optimize clearing an already cleared render target (modern GPUs make a clear inexpensive if not free) and the fact that you never draw anything to it after the clear means that browsers can trivially identify that they have no need to do any actual work either. Furthermore, you're not doing anything with the results of the rendering operation, and some browsers will trivially optimize rendering operations that are never presented (for example, rendering to an offscreen canvas and never using the output can be deferred in some Chrome configurations).

This test should not be included or scored until it's real.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.