GitHub PullRequestEvent at 2014-04-30 00:00:05
Repository: logfmt-ruby
Actor: cyberdelia
Payload: {"action":"closed","number":1,"pull_request":{"url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/pulls/1","id":11037931,"html_url":"https://github.com/cyberdelia/logfmt-ruby/pull/1","diff_url":"https://github.com/cyberdelia/logfmt-ruby/pull/1.diff","patch_url":"https://github.com/cyberdelia/logfmt-ruby/pull/1.patch","issue_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/issues/1","number":1,"state":"closed","title":"WIP faster parser - please don't be afraid :)","user":{"login":"zimbatm","id":3248,"avatar_url":"https://avatars.githubusercontent.com/u/3248?","gravatar_id":"13120f1de7c199861733f2cfd349d860","url":"https://api.github.com/users/zimbatm","html_url":"https://github.com/zimbatm","followers_url":"https://api.github.com/users/zimbatm/followers","following_url":"https://api.github.com/users/zimbatm/following{/other_user}","gists_url":"https://api.github.com/users/zimbatm/gists{/gist_id}","starred_url":"https://api.github.com/users/zimbatm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zimbatm/subscriptions","organizations_url":"https://api.github.com/users/zimbatm/orgs","repos_url":"https://api.github.com/users/zimbatm/repos","events_url":"https://api.github.com/users/zimbatm/events{/privacy}","received_events_url":"https://api.github.com/users/zimbatm/received_events","type":"User","site_admin":false},"body":"Hello,\r\n\r\nthis is a work in progress but I would like to share some preliminary results and see if there is any interest. Long story short I found out that Parslet is a great expressive tool and great to put done some ideas on how to do the parsing but it's very slow.\r\n\r\nIn this commit I added two new parser; one who is a hand-written parser (with some regexp) and one who is just a big regexp. Here are some results for 2k line parses:\r\n\r\n```\r\nruby bench.rb\r\n                           user     system      total        real\r\nparslet                2.260000   0.000000   2.260000 (  2.258811)\r\nhand                   0.060000   0.000000   0.060000 (  0.059822)\r\nregexp                 0.020000   0.000000   0.020000 (  0.023754)\r\n```\r\n\r\nI also think that the keys should really be strings because the symbols never garbage-collect and the keys really could be anything.","created_at":"2013-12-22T00:35:23Z","updated_at":"2014-04-30T00:00:05Z","closed_at":"2014-04-30T00:00:05Z","merged_at":null,"merge_commit_sha":"dfb95c347edfe4d9eb7e971cebee620e335da814","assignee":null,"milestone":null,"commits_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/pulls/1/commits","review_comments_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/pulls/1/comments","review_comment_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/pulls/comments/{number}","comments_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/issues/1/comments","statuses_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/statuses/267db7e1f05e7b657e19d9c9337df544549a86f4","head":{"label":"zimbatm:faster-parser","ref":"faster-parser","sha":"267db7e1f05e7b657e19d9c9337df544549a86f4","user":{"login":"zimbatm","id":3248,"avatar_url":"https://avatars.githubusercontent.com/u/3248?","gravatar_id":"13120f1de7c199861733f2cfd349d860","url":"https://api.github.com/users/zimbatm","html_url":"https://github.com/zimbatm","followers_url":"https://api.github.com/users/zimbatm/followers","following_url":"https://api.github.com/users/zimbatm/following{/other_user}","gists_url":"https://api.github.com/users/zimbatm/gists{/gist_id}","starred_url":"https://api.github.com/users/zimbatm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zimbatm/subscriptions","organizations_url":"https://api.github.com/users/zimbatm/orgs","repos_url":"https://api.github.com/users/zimbatm/repos","events_url":"https://api.github.com/users/zimbatm/events{/privacy}","received_events_url":"https://api.github.com/users/zimbatm/received_events","type":"User","site_admin":false},"repo":{"id":15367967,"name":"logfmt-ruby","full_name":"zimbatm/logfmt-ruby","owner":{"login":"zimbatm","id":3248,"avatar_url":"https://avatars.githubusercontent.com/u/3248?","gravatar_id":"13120f1de7c199861733f2cfd349d860","url":"https://api.github.com/users/zimbatm","html_url":"https://github.com/zimbatm","followers_url":"https://api.github.com/users/zimbatm/followers","following_url":"https://api.github.com/users/zimbatm/following{/other_user}","gists_url":"https://api.github.com/users/zimbatm/gists{/gist_id}","starred_url":"https://api.github.com/users/zimbatm/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/zimbatm/subscriptions","organizations_url":"https://api.github.com/users/zimbatm/orgs","repos_url":"https://api.github.com/users/zimbatm/repos","events_url":"https://api.github.com/users/zimbatm/events{/privacy}","received_events_url":"https://api.github.com/users/zimbatm/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/zimbatm/logfmt-ruby","description":"Parse log lines in the logfmt style.","fork":true,"url":"https://api.github.com/repos/zimbatm/logfmt-ruby","forks_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/forks","keys_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/keys{/key_id}","collaborators_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/teams","hooks_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/hooks","issue_events_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/issues/events{/number}","events_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/events","assignees_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/assignees{/user}","branches_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/branches{/branch}","tags_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/tags","blobs_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/git/refs{/sha}","trees_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/git/trees{/sha}","statuses_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/statuses/{sha}","languages_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/languages","stargazers_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/stargazers","contributors_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/contributors","subscribers_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/subscribers","subscription_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/subscription","commits_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/commits{/sha}","git_commits_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/git/commits{/sha}","comments_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/comments{/number}","issue_comment_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/issues/comments/{number}","contents_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/contents/{+path}","compare_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/compare/{base}...{head}","merges_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/merges","archive_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/downloads","issues_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/issues{/number}","pulls_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/pulls{/number}","milestones_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/milestones{/number}","notifications_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/labels{/name}","releases_url":"https://api.github.com/repos/zimbatm/logfmt-ruby/releases{/id}","created_at":"2013-12-22T00:26:53Z","updated_at":"2014-04-30T00:00:05Z","pushed_at":"2013-12-22T22:55:28Z","git_url":"git://github.com/zimbatm/logfmt-ruby.git","ssh_url":"git@github.com:zimbatm/logfmt-ruby.git","clone_url":"https://github.com/zimbatm/logfmt-ruby.git","svn_url":"https://github.com/zimbatm/logfmt-ruby","homepage":"https://github.com/cyberdelia/logfmt-ruby","size":118,"stargazers_count":0,"watchers_count":0,"language":"Ruby","has_issues":false,"has_downloads":true,"has_wiki":false,"forks_count":1,"mirror_url":null,"open_issues_count":0,"forks":1,"open_issues":0,"watchers":0,"default_branch":"master"}},"base":{"label":"cyberdelia:master","ref":"master","sha":"7409668c04fb9c1d25637aab557e8c901c44e8f2","user":{"login":"cyberdelia","id":44535,"avatar_url":"https://avatars.githubusercontent.com/u/44535?","gravatar_id":"5a810a7779b19a5ac9e6cffa8531eee6","url":"https://api.github.com/users/cyberdelia","html_url":"https://github.com/cyberdelia","followers_url":"https://api.github.com/users/cyberdelia/followers","following_url":"https://api.github.com/users/cyberdelia/following{/other_user}","gists_url":"https://api.github.com/users/cyberdelia/gists{/gist_id}","starred_url":"https://api.github.com/users/cyberdelia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cyberdelia/subscriptions","organizations_url":"https://api.github.com/users/cyberdelia/orgs","repos_url":"https://api.github.com/users/cyberdelia/repos","events_url":"https://api.github.com/users/cyberdelia/events{/privacy}","received_events_url":"https://api.github.com/users/cyberdelia/received_events","type":"User","site_admin":false},"repo":{"id":9891497,"name":"logfmt-ruby","full_name":"cyberdelia/logfmt-ruby","owner":{"login":"cyberdelia","id":44535,"avatar_url":"https://avatars.githubusercontent.com/u/44535?","gravatar_id":"5a810a7779b19a5ac9e6cffa8531eee6","url":"https://api.github.com/users/cyberdelia","html_url":"https://github.com/cyberdelia","followers_url":"https://api.github.com/users/cyberdelia/followers","following_url":"https://api.github.com/users/cyberdelia/following{/other_user}","gists_url":"https://api.github.com/users/cyberdelia/gists{/gist_id}","starred_url":"https://api.github.com/users/cyberdelia/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/cyberdelia/subscriptions","organizations_url":"https://api.github.com/users/cyberdelia/orgs","repos_url":"https://api.github.com/users/cyberdelia/repos","events_url":"https://api.github.com/users/cyberdelia/events{/privacy}","received_events_url":"https://api.github.com/users/cyberdelia/received_events","type":"User","site_admin":false},"private":false,"html_url":"https://github.com/cyberdelia/logfmt-ruby","description":"Parse log lines in the logfmt style.","fork":false,"url":"https://api.github.com/repos/cyberdelia/logfmt-ruby","forks_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/forks","keys_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/keys{/key_id}","collaborators_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/collaborators{/collaborator}","teams_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/teams","hooks_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/hooks","issue_events_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/issues/events{/number}","events_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/events","assignees_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/assignees{/user}","branches_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/branches{/branch}","tags_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/tags","blobs_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/git/blobs{/sha}","git_tags_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/git/tags{/sha}","git_refs_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/git/refs{/sha}","trees_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/git/trees{/sha}","statuses_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/statuses/{sha}","languages_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/languages","stargazers_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/stargazers","contributors_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/contributors","subscribers_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/subscribers","subscription_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/subscription","commits_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/commits{/sha}","git_commits_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/git/commits{/sha}","comments_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/comments{/number}","issue_comment_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/issues/comments/{number}","contents_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/contents/{+path}","compare_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/compare/{base}...{head}","merges_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/merges","archive_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/{archive_format}{/ref}","downloads_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/downloads","issues_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/issues{/number}","pulls_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/pulls{/number}","milestones_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/milestones{/number}","notifications_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/notifications{?since,all,participating}","labels_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/labels{/name}","releases_url":"https://api.github.com/repos/cyberdelia/logfmt-ruby/releases{/id}","created_at":"2013-05-06T16:51:48Z","updated_at":"2014-04-24T16:36:23Z","pushed_at":"2014-04-24T16:36:24Z","git_url":"git://github.com/cyberdelia/logfmt-ruby.git","ssh_url":"git@github.com:cyberdelia/logfmt-ruby.git","clone_url":"https://github.com/cyberdelia/logfmt-ruby.git","svn_url":"https://github.com/cyberdelia/logfmt-ruby","homepage":"https://github.com/cyberdelia/logfmt-ruby","size":238,"stargazers_count":3,"watchers_count":3,"language":"Ruby","has_issues":true,"has_downloads":true,"has_wiki":false,"forks_count":4,"mirror_url":null,"open_issues_count":0,"forks":4,"open_issues":0,"watchers":3,"default_branch":"master"}},"_links":{"self":{"href":"https://api.github.com/repos/cyberdelia/logfmt-ruby/pulls/1"},"html":{"href":"https://github.com/cyberdelia/logfmt-ruby/pull/1"},"issue":{"href":"https://api.github.com/repos/cyberdelia/logfmt-ruby/issues/1"},"comments":{"href":"https://api.github.com/repos/cyberdelia/logfmt-ruby/issues/1/comments"},"review_comments":{"href":"https://api.github.com/repos/cyberdelia/logfmt-ruby/pulls/1/comments"},"review_comment":{"href":"https://api.github.com/repos/cyberdelia/logfmt-ruby/pulls/comments/{number}"},"commits":{"href":"https://api.github.com/repos/cyberdelia/logfmt-ruby/pulls/1/commits"},"statuses":{"href":"https://api.github.com/repos/cyberdelia/logfmt-ruby/statuses/267db7e1f05e7b657e19d9c9337df544549a86f4"}},"merged":false,"mergeable":false,"mergeable_state":"dirty","merged_by":null,"comments":4,"review_comments":0,"commits":7,"additions":423,"deletions":17,"changed_files":10}}