{"action":"created","issue":{"url":"https://api.github.com/repos/wiredtiger/wiredtiger/issues/1917","labels_url":"https://api.github.com/repos/wiredtiger/wiredtiger/issues/1917/labels{/name}","comments_url":"https://api.github.com/repos/wiredtiger/wiredtiger/issues/1917/comments","events_url":"https://api.github.com/repos/wiredtiger/wiredtiger/issues/1917/events","html_url":"https://github.com/wiredtiger/wiredtiger/pull/1917","id":70986596,"number":1917,"title":"Row search simplify","user":{"login":"keithbostic","id":1393186,"avatar_url":"https://avatars.githubusercontent.com/u/1393186?v=3","gravatar_id":"","url":"https://api.github.com/users/keithbostic","html_url":"https://github.com/keithbostic","followers_url":"https://api.github.com/users/keithbostic/followers","following_url":"https://api.github.com/users/keithbostic/following{/other_user}","gists_url":"https://api.github.com/users/keithbostic/gists{/gist_id}","starred_url":"https://api.github.com/users/keithbostic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keithbostic/subscriptions","organizations_url":"https://api.github.com/users/keithbostic/orgs","repos_url":"https://api.github.com/users/keithbostic/repos","events_url":"https://api.github.com/users/keithbostic/events{/privacy}","received_events_url":"https://api.github.com/users/keithbostic/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/wiredtiger/wiredtiger/labels/Performance","name":"Performance","color":"02e10c"}],"state":"open","locked":false,"assignee":{"login":"keithbostic","id":1393186,"avatar_url":"https://avatars.githubusercontent.com/u/1393186?v=3","gravatar_id":"","url":"https://api.github.com/users/keithbostic","html_url":"https://github.com/keithbostic","followers_url":"https://api.github.com/users/keithbostic/followers","following_url":"https://api.github.com/users/keithbostic/following{/other_user}","gists_url":"https://api.github.com/users/keithbostic/gists{/gist_id}","starred_url":"https://api.github.com/users/keithbostic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keithbostic/subscriptions","organizations_url":"https://api.github.com/users/keithbostic/orgs","repos_url":"https://api.github.com/users/keithbostic/repos","events_url":"https://api.github.com/users/keithbostic/events{/privacy}","received_events_url":"https://api.github.com/users/keithbostic/received_events","type":"User","site_admin":false},"milestone":null,"comments":2,"created_at":"2015-04-26T00:29:05Z","updated_at":"2015-04-27T12:50:29Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/wiredtiger/wiredtiger/pulls/1917","html_url":"https://github.com/wiredtiger/wiredtiger/pull/1917","diff_url":"https://github.com/wiredtiger/wiredtiger/pull/1917.diff","patch_url":"https://github.com/wiredtiger/wiredtiger/pull/1917.patch"},"body":"@michaelcahill, I made a change I've been thinking about for awhile, splitting up the object types in the Btree cursor code and removing some of the `btree->type == BTREE_ROW` branches in the code, I thought it might make a difference.\r\n\r\nThe following branch gets me about 4% improvement in the row-store cursor lookup path (pixiebob, clang 3.3 with -O3, running a microbenchmark doing 100M WT_CURSOR.set_key and WT_CURSOR.search pairs).\r\n\r\nI can't get too excited about 4% -- I think it depends if you think this architecture is at least as clean, understandable and maintainable as the old one? If you like the old structure better, I'm happy to discard the branch, otherwise, I'm happy to take the 4%.\r\n\r\nObviously, we could keep going down this path (split up fixed-length vs. variable length column store, for example), this was just an experiment in making row-store searches faster."},"comment":{"url":"https://api.github.com/repos/wiredtiger/wiredtiger/issues/comments/96638692","html_url":"https://github.com/wiredtiger/wiredtiger/pull/1917#issuecomment-96638692","issue_url":"https://api.github.com/repos/wiredtiger/wiredtiger/issues/1917","id":96638692,"user":{"login":"keithbostic","id":1393186,"avatar_url":"https://avatars.githubusercontent.com/u/1393186?v=3","gravatar_id":"","url":"https://api.github.com/users/keithbostic","html_url":"https://github.com/keithbostic","followers_url":"https://api.github.com/users/keithbostic/followers","following_url":"https://api.github.com/users/keithbostic/following{/other_user}","gists_url":"https://api.github.com/users/keithbostic/gists{/gist_id}","starred_url":"https://api.github.com/users/keithbostic/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/keithbostic/subscriptions","organizations_url":"https://api.github.com/users/keithbostic/orgs","repos_url":"https://api.github.com/users/keithbostic/repos","events_url":"https://api.github.com/users/keithbostic/events{/privacy}","received_events_url":"https://api.github.com/users/keithbostic/received_events","type":"User","site_admin":false},"created_at":"2015-04-27T12:50:29Z","updated_at":"2015-04-27T12:50:29Z","body":"@michaelcahill, understood -- as I said, the gain isn't compelling.\r\n\r\nFTR, I tried inlining `__wt_kv_return` (passing in `BTREE_ROW` so the compiler could discard all but the relevant parts of the switch). It was slightly faster than the function call, but it wasn't significant in my testing."}}