{"action":"created","issue":{"url":"https://api.github.com/repos/datastax/csharp-driver/issues/154","labels_url":"https://api.github.com/repos/datastax/csharp-driver/issues/154/labels{/name}","comments_url":"https://api.github.com/repos/datastax/csharp-driver/issues/154/comments","events_url":"https://api.github.com/repos/datastax/csharp-driver/issues/154/events","html_url":"https://github.com/datastax/csharp-driver/pull/154","id":112589774,"number":154,"title":"Buffer pooling","user":{"login":"jorgebay","id":2931196,"avatar_url":"https://avatars.githubusercontent.com/u/2931196?v=3","gravatar_id":"","url":"https://api.github.com/users/jorgebay","html_url":"https://github.com/jorgebay","followers_url":"https://api.github.com/users/jorgebay/followers","following_url":"https://api.github.com/users/jorgebay/following{/other_user}","gists_url":"https://api.github.com/users/jorgebay/gists{/gist_id}","starred_url":"https://api.github.com/users/jorgebay/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jorgebay/subscriptions","organizations_url":"https://api.github.com/users/jorgebay/orgs","repos_url":"https://api.github.com/users/jorgebay/repos","events_url":"https://api.github.com/users/jorgebay/events{/privacy}","received_events_url":"https://api.github.com/users/jorgebay/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":4,"created_at":"2015-10-21T13:37:18Z","updated_at":"2015-10-22T15:08:14Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/datastax/csharp-driver/pulls/154","html_url":"https://github.com/datastax/csharp-driver/pull/154","diff_url":"https://github.com/datastax/csharp-driver/pull/154.diff","patch_url":"https://github.com/datastax/csharp-driver/pull/154.patch"},"body":"Included 2 classes from `Microsoft.IO.RecyclableMemoryStream` under MIT, left copyright headers in files and added a notice file with the copyright information.\r\n\r\nAll requests in the write queue are written to a single stream. \r\nOn the read path, the body from all frames received in the incoming buffer are stored in a single stream and then read in order. Instead of using 1 task to invoke each callback, 1 task is used to invoke all complete messages received.\r\n\r\nOther changes\r\n- Introduced a big endian converter `BeConverter`\r\n- Renamed `BEBinaryWriter` and `BEBinaryWriter` into `FrameWriter` and `FrameReader`.\r\n- Removed `ListBackedStream`.\r\n- Introduced a thread-local reusable buffer for parsing row values (where allowed).\r\n\r\nIt's chained with #151.\r\n\r\nThere other improvements that can be made, but I think it is out of scope for now (we can create tickets for it):\r\n- Improve the `IFrameCompressor` interface to support a count/length parameter to avoid extra copies.\r\n- Improve TypeCodec to reuse buffers and support count/length parameter on decoding methods (see `DecodeVarchar()` for example)."},"comment":{"url":"https://api.github.com/repos/datastax/csharp-driver/issues/comments/150256181","html_url":"https://github.com/datastax/csharp-driver/pull/154#issuecomment-150256181","issue_url":"https://api.github.com/repos/datastax/csharp-driver/issues/154","id":150256181,"user":{"login":"jorgebay","id":2931196,"avatar_url":"https://avatars.githubusercontent.com/u/2931196?v=3","gravatar_id":"","url":"https://api.github.com/users/jorgebay","html_url":"https://github.com/jorgebay","followers_url":"https://api.github.com/users/jorgebay/followers","following_url":"https://api.github.com/users/jorgebay/following{/other_user}","gists_url":"https://api.github.com/users/jorgebay/gists{/gist_id}","starred_url":"https://api.github.com/users/jorgebay/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jorgebay/subscriptions","organizations_url":"https://api.github.com/users/jorgebay/orgs","repos_url":"https://api.github.com/users/jorgebay/repos","events_url":"https://api.github.com/users/jorgebay/events{/privacy}","received_events_url":"https://api.github.com/users/jorgebay/received_events","type":"User","site_admin":false},"created_at":"2015-10-22T15:08:14Z","updated_at":"2015-10-22T15:08:14Z","body":"I'm getting around twice the amount of ops per second, in an insert-based scenario: ~70% more throughput with just CSHARP-244 and an extra ~30% with CSHARP-270.\r\n\r\nI will continue cover insert+select scenario and share my benchmarks tomorrow."}}