{"action":"created","issue":{"url":"https://api.github.com/repos/aspnet/Microsoft.Data.Sqlite/issues/235","repository_url":"https://api.github.com/repos/aspnet/Microsoft.Data.Sqlite","labels_url":"https://api.github.com/repos/aspnet/Microsoft.Data.Sqlite/issues/235/labels{/name}","comments_url":"https://api.github.com/repos/aspnet/Microsoft.Data.Sqlite/issues/235/comments","events_url":"https://api.github.com/repos/aspnet/Microsoft.Data.Sqlite/issues/235/events","html_url":"https://github.com/aspnet/Microsoft.Data.Sqlite/issues/235","id":137009149,"number":235,"title":"Implement SqliteCommand.Prepare","user":{"login":"buybackoff","id":489852,"avatar_url":"https://avatars.githubusercontent.com/u/489852?v=3","gravatar_id":"","url":"https://api.github.com/users/buybackoff","html_url":"https://github.com/buybackoff","followers_url":"https://api.github.com/users/buybackoff/followers","following_url":"https://api.github.com/users/buybackoff/following{/other_user}","gists_url":"https://api.github.com/users/buybackoff/gists{/gist_id}","starred_url":"https://api.github.com/users/buybackoff/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/buybackoff/subscriptions","organizations_url":"https://api.github.com/users/buybackoff/orgs","repos_url":"https://api.github.com/users/buybackoff/repos","events_url":"https://api.github.com/users/buybackoff/events{/privacy}","received_events_url":"https://api.github.com/users/buybackoff/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/aspnet/Microsoft.Data.Sqlite/labels/enhancement","name":"enhancement","color":"bfe5bf"}],"state":"open","locked":false,"assignee":null,"milestone":{"url":"https://api.github.com/repos/aspnet/Microsoft.Data.Sqlite/milestones/1","html_url":"https://github.com/aspnet/Microsoft.Data.Sqlite/milestones/Backlog","labels_url":"https://api.github.com/repos/aspnet/Microsoft.Data.Sqlite/milestones/1/labels","id":648038,"number":1,"title":"Backlog","description":"","creator":{"login":"bricelam","id":1226749,"avatar_url":"https://avatars.githubusercontent.com/u/1226749?v=3","gravatar_id":"","url":"https://api.github.com/users/bricelam","html_url":"https://github.com/bricelam","followers_url":"https://api.github.com/users/bricelam/followers","following_url":"https://api.github.com/users/bricelam/following{/other_user}","gists_url":"https://api.github.com/users/bricelam/gists{/gist_id}","starred_url":"https://api.github.com/users/bricelam/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/bricelam/subscriptions","organizations_url":"https://api.github.com/users/bricelam/orgs","repos_url":"https://api.github.com/users/bricelam/repos","events_url":"https://api.github.com/users/bricelam/events{/privacy}","received_events_url":"https://api.github.com/users/bricelam/received_events","type":"User","site_admin":false},"open_issues":15,"closed_issues":3,"state":"open","created_at":"2014-05-03T18:57:10Z","updated_at":"2016-03-04T21:59:47Z","due_on":null,"closed_at":null},"comments":5,"created_at":"2016-02-28T05:28:11Z","updated_at":"2016-03-04T22:00:27Z","closed_at":null,"body":"Prepare method is [not implemented](https://github.com/aspnet/Microsoft.Data.Sqlite/blob/dev/src/Microsoft.Data.Sqlite/SqliteCommand.cs#L85) and the prepared statement is not reused ([as in System.Data.SQLite](https://github.com/OpenDataSpace/System.Data.SQLite/blob/master/System.Data.SQLite/SQLiteCommand.cs#L892)), but [is disposed](https://github.com/aspnet/Microsoft.Data.Sqlite/blob/dev/src/Microsoft.Data.Sqlite/SqliteCommand.cs#L205) on every execution. Currently there is no way to reuse a command like in [this example](https://msdn.microsoft.com/en-us/library/system.data.idbcommand.prepare%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396).\r\n\r\nIn the simplest [insert case](https://github.com/Spreads/Spreads/blob/master/tests/Spreads.Extensions.Tests/Storage/SQLite/SqlitePerformanceTest.cs#L39), it takes almost 20% (of which UTF8 marshalling is 2.4 pp):\r\n\r\n![image](https://cloud.githubusercontent.com/assets/489852/13377623/4ba8919e-ddf3-11e5-9fba-298bb878fba8.png)\r\n\r\nI haven't found any discussion in issues about that. It is not hard to implement, but I am not sure if it is already on your TODO list and what design you have in your minds?"},"comment":{"url":"https://api.github.com/repos/aspnet/Microsoft.Data.Sqlite/issues/comments/192488001","html_url":"https://github.com/aspnet/Microsoft.Data.Sqlite/issues/235#issuecomment-192488001","issue_url":"https://api.github.com/repos/aspnet/Microsoft.Data.Sqlite/issues/235","id":192488001,"user":{"login":"rowanmiller","id":4741851,"avatar_url":"https://avatars.githubusercontent.com/u/4741851?v=3","gravatar_id":"","url":"https://api.github.com/users/rowanmiller","html_url":"https://github.com/rowanmiller","followers_url":"https://api.github.com/users/rowanmiller/followers","following_url":"https://api.github.com/users/rowanmiller/following{/other_user}","gists_url":"https://api.github.com/users/rowanmiller/gists{/gist_id}","starred_url":"https://api.github.com/users/rowanmiller/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/rowanmiller/subscriptions","organizations_url":"https://api.github.com/users/rowanmiller/orgs","repos_url":"https://api.github.com/users/rowanmiller/repos","events_url":"https://api.github.com/users/rowanmiller/events{/privacy}","received_events_url":"https://api.github.com/users/rowanmiller/received_events","type":"User","site_admin":false},"created_at":"2016-03-04T22:00:27Z","updated_at":"2016-03-04T22:00:27Z","body":"Moving to the backlog as we do want to keep this around to consider implementing in the future"}}