{"action":"created","issue":{"url":"https://api.github.com/repos/Test-More/test-more/issues/666","repository_url":"https://api.github.com/repos/Test-More/test-more","labels_url":"https://api.github.com/repos/Test-More/test-more/issues/666/labels{/name}","comments_url":"https://api.github.com/repos/Test-More/test-more/issues/666/comments","events_url":"https://api.github.com/repos/Test-More/test-more/issues/666/events","html_url":"https://github.com/Test-More/test-more/pull/666","id":154455913,"number":666,"title":"Load time micro optimizations","user":{"login":"haarg","id":50029,"avatar_url":"https://avatars.githubusercontent.com/u/50029?v=3","gravatar_id":"","url":"https://api.github.com/users/haarg","html_url":"https://github.com/haarg","followers_url":"https://api.github.com/users/haarg/followers","following_url":"https://api.github.com/users/haarg/following{/other_user}","gists_url":"https://api.github.com/users/haarg/gists{/gist_id}","starred_url":"https://api.github.com/users/haarg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haarg/subscriptions","organizations_url":"https://api.github.com/users/haarg/orgs","repos_url":"https://api.github.com/users/haarg/repos","events_url":"https://api.github.com/users/haarg/events{/privacy}","received_events_url":"https://api.github.com/users/haarg/received_events","type":"User","site_admin":false},"labels":[],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":2,"created_at":"2016-05-12T11:04:25Z","updated_at":"2016-05-16T13:21:50Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/Test-More/test-more/pulls/666","html_url":"https://github.com/Test-More/test-more/pull/666","diff_url":"https://github.com/Test-More/test-more/pull/666.diff","patch_url":"https://github.com/Test-More/test-more/pull/666.patch"},"body":"This is a number of micro-optimizations to the code.  These changes are not all well tested yet, but I'm opening this for discussion.\r\n\r\nAs a rough benchmark, I ran `perl -MTest::More -e'ok 1; done_testing;' 1000 times.  These changes reduced the runtime from 61.3 seconds to 55.9 seconds.\r\n\r\nThe largest gains are gotten by preventing unneeded modules from being loaded.  Lazy loading overload is trivial (and is what Test::Builder used to do).  Preventing `Config_heavy.pl` from being needed in most cases is also straightforward.\r\n\r\nPreventing Exporter::Heavy from being needed is uglier.  In one case, a goto &Exporter::import is used rather than calling export_to_level.  I believe this may be problematic on older perl 5.8 releases.  In another case, it manually handles exporting $TODO, as Exporter::Heavy is needed for any non-sub export.  Applying only one of these two changes would be pointless."},"comment":{"url":"https://api.github.com/repos/Test-More/test-more/issues/comments/219423151","html_url":"https://github.com/Test-More/test-more/pull/666#issuecomment-219423151","issue_url":"https://api.github.com/repos/Test-More/test-more/issues/666","id":219423151,"user":{"login":"haarg","id":50029,"avatar_url":"https://avatars.githubusercontent.com/u/50029?v=3","gravatar_id":"","url":"https://api.github.com/users/haarg","html_url":"https://github.com/haarg","followers_url":"https://api.github.com/users/haarg/followers","following_url":"https://api.github.com/users/haarg/following{/other_user}","gists_url":"https://api.github.com/users/haarg/gists{/gist_id}","starred_url":"https://api.github.com/users/haarg/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/haarg/subscriptions","organizations_url":"https://api.github.com/users/haarg/orgs","repos_url":"https://api.github.com/users/haarg/repos","events_url":"https://api.github.com/users/haarg/events{/privacy}","received_events_url":"https://api.github.com/users/haarg/received_events","type":"User","site_admin":false},"created_at":"2016-05-16T13:21:50Z","updated_at":"2016-05-16T13:21:50Z","body":"I checked on my concerns about `goto &Exporter::import`.  I don't believe it should cause any issues.  The problem I was concerned about in early 5.8 releases involved a similar but different case.\r\n\r\nI'm less happy about the manual $TODO exporting, but I didn't see a much better way to handle it and still get that optimization."}}