{"action":"created","issue":{"url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/2159","repository_url":"https://api.github.com/repos/CorfuDB/CorfuDB","labels_url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/2159/labels{/name}","comments_url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/2159/comments","events_url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/2159/events","html_url":"https://github.com/CorfuDB/CorfuDB/pull/2159","id":493552322,"node_id":"MDExOlB1bGxSZXF1ZXN0MzE3NTExNTQ2","number":2159,"title":"Benchmark module. Large corfu table benchmarks: RocksDb vs EhCache","user":{"login":"xnull","id":314292,"node_id":"MDQ6VXNlcjMxNDI5Mg==","avatar_url":"https://avatars0.githubusercontent.com/u/314292?v=4","gravatar_id":"","url":"https://api.github.com/users/xnull","html_url":"https://github.com/xnull","followers_url":"https://api.github.com/users/xnull/followers","following_url":"https://api.github.com/users/xnull/following{/other_user}","gists_url":"https://api.github.com/users/xnull/gists{/gist_id}","starred_url":"https://api.github.com/users/xnull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xnull/subscriptions","organizations_url":"https://api.github.com/users/xnull/orgs","repos_url":"https://api.github.com/users/xnull/repos","events_url":"https://api.github.com/users/xnull/events{/privacy}","received_events_url":"https://api.github.com/users/xnull/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2019-09-13T23:30:14Z","updated_at":"2019-09-18T17:36:56Z","closed_at":null,"author_association":"COLLABORATOR","pull_request":{"url":"https://api.github.com/repos/CorfuDB/CorfuDB/pulls/2159","html_url":"https://github.com/CorfuDB/CorfuDB/pull/2159","diff_url":"https://github.com/CorfuDB/CorfuDB/pull/2159.diff","patch_url":"https://github.com/CorfuDB/CorfuDB/pull/2159.patch"},"body":"## Overview\r\n\r\nBenchmarks for Large/Persistent Corfu table backed by EhCache vs RocksDb.\r\n\r\nDescription:\r\nBenchmarking corf table backed by EhCache vs RocksDb. \r\nProvides performance characteristics over the implementations that proves advantages/disadvantages one approach over another one.\r\nDocumentation https://github.com/CorfuDB/CorfuDB/blob/large_table_benchmarks/docs/benchmarks/corfu-table.md\r\n\r\nThe prototypes of the persistent CorfTable (EhCache/RocksDb) can/will be used to implement a performant production-ready Corfu table implementation.\r\n\r\nWhy should this be merged: \r\n\r\nRelated issue(s) (if applicable): #<number>\r\n\r\n\r\n## Checklist (Definition of Done):\r\n\r\n- [ ] There are no TODOs left in the code\r\n- [ ] [Coding conventions](https://github.com/CorfuDB/CorfuDB/wiki/Corfu-Style-Guidelines) (e.g. for logging, unit tests) have been followed\r\n- [ ] Change is covered by automated tests\r\n- [ ] Public API has Javadoc\r\n"},"comment":{"url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/comments/532788532","html_url":"https://github.com/CorfuDB/CorfuDB/pull/2159#issuecomment-532788532","issue_url":"https://api.github.com/repos/CorfuDB/CorfuDB/issues/2159","id":532788532,"node_id":"MDEyOklzc3VlQ29tbWVudDUzMjc4ODUzMg==","user":{"login":"xnull","id":314292,"node_id":"MDQ6VXNlcjMxNDI5Mg==","avatar_url":"https://avatars0.githubusercontent.com/u/314292?v=4","gravatar_id":"","url":"https://api.github.com/users/xnull","html_url":"https://github.com/xnull","followers_url":"https://api.github.com/users/xnull/followers","following_url":"https://api.github.com/users/xnull/following{/other_user}","gists_url":"https://api.github.com/users/xnull/gists{/gist_id}","starred_url":"https://api.github.com/users/xnull/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/xnull/subscriptions","organizations_url":"https://api.github.com/users/xnull/orgs","repos_url":"https://api.github.com/users/xnull/repos","events_url":"https://api.github.com/users/xnull/events{/privacy}","received_events_url":"https://api.github.com/users/xnull/received_events","type":"User","site_admin":false},"created_at":"2019-09-18T17:36:56Z","updated_at":"2019-09-18T17:36:56Z","author_association":"COLLABORATOR","body":"@zalokhan I don't agree, breaking down into 2 pr-s is a bunch of useless work. \r\n 1. What's the profit if that 2 pr-s will go one after another immediately?\r\n 2. Benchmark framework is nothing but a JMH dependency and maven module. It's not worth creating a module with a dependency that doesn't contain any code.\r\n 3. Next time if you need to compare Ehcache and rocks again, are you going to implement those benchmark tests one more time? Benchmarks are needed to show/prove the performance of a particular code/library, even if that library is not used in code, also the benchmark proves why a particular library/code used instead of another one.\r\n 4.  It won't be tough to maintain the APIs because if your API changed dramatically then you have to prove that there is no critical performance degradation in your code which means you have to update tests and prove that it shows expected performance or you can delete tests if they not relevant anymore. \r\nWe have the same number of arguments like in case of unit tests - unit tests can get obsolete for example.  That's true but that the reason why we have unit tests - check that nothing is broken. Same works for benchmark tests.\r\n 5. I believe that any critical code must go through benchmarks and only then can be added into code-base. Because of this benchmark tests, we realized that EhCache doesn't work for us and we won't implement it in code and going to migrate to rocksDb.\r\n6. When we have an implementation of CorfuTable backed by rocks or Ehcache in code we will modify benchmark tests accordingly. Nothing can get broken or get obsolete."}}
{"actor":{"display_login":"xnull"}}