-
Notifications
You must be signed in to change notification settings - Fork 2k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Proposal for next test type: cached multiple database queries #374
Comments
Added 7, 8, and 9 to the above description. We expect a bona-fide cache library; bulk get operations are acceptable; and there is no need to configure a distributed cache. |
While the multi-query test runs 1, 5, 10, and 20 iterations, we should consider having this test using more iterations. Perhaps 1, 20, 100, 500. |
What do you guys think about starting to tackle reference implementations of this? It should be really simple to add a Guava CacheBuilder implementation to Servlet, create a Gemini version (just create a different entity class that is marked as cached but refers to the same Worlds table). Then with a bit more work we could create Rails, Django, and node.js tests that use Redis, for example. There may even be libraries for those that fairly easily add a pass-through Redis cache. At the very least, I'd like to finalize the specifications and allow implementations to begin. Are there any concerns to raise about the specifications enumerated above? Especially of interest to me are any loopholes that exotic implementations may exploit. |
Kicking this WAY down the road since this will not be happening in round 12. |
|
Sorry, I accidentally commented on this while using a different profile. @zane-techempower 1) The implementation should be a cache backed by the database table. It is acceptable for the cache to be primed with all values from the table at start-up time or to populate lazily on an as-needed basis. But it should not return "not found" for records that do exist in the database table. Note that there is no expectation of concurrent updates to the table, so it's not necessary to periodically examine the table for changes.
|
@zane-techempower I think there should be some standard way in terms of setting up the cache service provider. We don't want measure the differences between IPC and in-process communication, do we? Let's say if we decide to use memcached then every framework/platform test bed shall use memcached. It is unfair to compare memcached based cache vs hash table based cache built by Guava's CacheBuilder. |
@greenlaw110 While I appreciate that point of view, as we design and specify test types such as this one, I feel we need to accept and allow for the wide spectrum of best-practices that may exist throughout all of the languages, platforms and frameworks. The more functionality we expect in a test type, the more diversity we need to be prepared to expect in implementation approaches. We can set some constraints if we feel it's warranted, but for this test type, I think the constraints I've outlined above are fairly reasonable. Perhaps we can add a distributed cache test as a future test type and require use of, for example, Redis. But even there, my inclination would be to allow for any distributed cache according to the best practices or preference of the frameworks. A test like this one allows platforms that have robust in-VM caching capabilities to shine. Requiring use of an external service, when several platform have in-VM capabilities that meet our requirements, makes this test type too similar to the database tests (that is, all implementations must make requests to an external service) for my liking. |
This new test has been merged into master with specs here: http://frameworkbenchmarks.readthedocs.io/en/latest/Project-Information/Framework-Tests/ |
For anyone interested, initial data for this new test type is starting to show up in the continuous results. For example, view http://simshill.techempower.com/raw/results.2018-02-09-10-22-34-441.json and navigate to:
We likely won't publish data for this test type on the results web site until we have a few more implementations. It would be nice to have 20+ but even a dozen or so would be a good target. Some additional diversity in technology coverage would be nice too. |
I'd like to propose and discuss the next test type now so that we can flesh out the details and allow implementations to begin soon. I'm leaning toward the next type being a caching test. To keep things simple, I propose basing the test on the existing multiple database query test.
The requirements at a high level would be:
The text was updated successfully, but these errors were encountered: