{"action":"created","issue":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/19449","repository_url":"https://api.github.com/repos/JuliaLang/julia","labels_url":"https://api.github.com/repos/JuliaLang/julia/issues/19449/labels{/name}","comments_url":"https://api.github.com/repos/JuliaLang/julia/issues/19449/comments","events_url":"https://api.github.com/repos/JuliaLang/julia/issues/19449/events","html_url":"https://github.com/JuliaLang/julia/pull/19449","id":192324666,"number":19449,"title":"faster `String` allocation","user":{"login":"JeffBezanson","id":744556,"avatar_url":"https://avatars.githubusercontent.com/u/744556?v=3","gravatar_id":"","url":"https://api.github.com/users/JeffBezanson","html_url":"https://github.com/JeffBezanson","followers_url":"https://api.github.com/users/JeffBezanson/followers","following_url":"https://api.github.com/users/JeffBezanson/following{/other_user}","gists_url":"https://api.github.com/users/JeffBezanson/gists{/gist_id}","starred_url":"https://api.github.com/users/JeffBezanson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JeffBezanson/subscriptions","organizations_url":"https://api.github.com/users/JeffBezanson/orgs","repos_url":"https://api.github.com/users/JeffBezanson/repos","events_url":"https://api.github.com/users/JeffBezanson/events{/privacy}","received_events_url":"https://api.github.com/users/JeffBezanson/received_events","type":"User","site_admin":false},"labels":[{"id":1363386,"url":"https://api.github.com/repos/JuliaLang/julia/labels/breaking","name":"breaking","color":"800000","default":false},{"id":294535982,"url":"https://api.github.com/repos/JuliaLang/julia/labels/needs%20docs","name":"needs docs","color":"d4c5f9","default":false},{"id":115858,"url":"https://api.github.com/repos/JuliaLang/julia/labels/performance","name":"performance","color":"d7e102","default":false},{"id":269951426,"url":"https://api.github.com/repos/JuliaLang/julia/labels/strings","name":"strings","color":"006b75","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/JuliaLang/julia/milestones/20","html_url":"https://github.com/JuliaLang/julia/milestone/20","labels_url":"https://api.github.com/repos/JuliaLang/julia/milestones/20/labels","id":1298021,"number":20,"title":"0.6.0","description":"","creator":{"login":"JeffBezanson","id":744556,"avatar_url":"https://avatars.githubusercontent.com/u/744556?v=3","gravatar_id":"","url":"https://api.github.com/users/JeffBezanson","html_url":"https://github.com/JeffBezanson","followers_url":"https://api.github.com/users/JeffBezanson/followers","following_url":"https://api.github.com/users/JeffBezanson/following{/other_user}","gists_url":"https://api.github.com/users/JeffBezanson/gists{/gist_id}","starred_url":"https://api.github.com/users/JeffBezanson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/JeffBezanson/subscriptions","organizations_url":"https://api.github.com/users/JeffBezanson/orgs","repos_url":"https://api.github.com/users/JeffBezanson/repos","events_url":"https://api.github.com/users/JeffBezanson/events{/privacy}","received_events_url":"https://api.github.com/users/JeffBezanson/received_events","type":"User","site_admin":false},"open_issues":85,"closed_issues":112,"state":"open","created_at":"2015-09-09T16:35:16Z","updated_at":"2017-01-01T01:01:25Z","due_on":"2017-02-28T08:00:00Z","closed_at":null},"comments":39,"created_at":"2016-11-29T16:09:03Z","updated_at":"2017-01-01T01:43:55Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/JuliaLang/julia/pulls/19449","html_url":"https://github.com/JuliaLang/julia/pull/19449","diff_url":"https://github.com/JuliaLang/julia/pull/19449.diff","patch_url":"https://github.com/JuliaLang/julia/pull/19449.patch"},"body":"This replaces the `Array` inside `String` with a length field, plus directly asking the GC to allocate space for the string data in-line. This is very incomplete so far, and is only meant to demonstrate the basic idea. The following gist has a hacked-up working version that can be used within an existing build: https://gist.github.com/JeffBezanson/6b7f1785bb7f2509cbd5d4ff1380556d\r\n\r\nThis makes string allocation ~2x faster, use 1 object instead of 2, and use around half the space for short strings. It's not pretty, but I think we should go with something like this to fix the immediate performance problem. Also removing the `.data` field as soon as possible will make it easier to change the representation in the future if we come up with something nicer."},"comment":{"url":"https://api.github.com/repos/JuliaLang/julia/issues/comments/269889054","html_url":"https://github.com/JuliaLang/julia/pull/19449#issuecomment-269889054","issue_url":"https://api.github.com/repos/JuliaLang/julia/issues/19449","id":269889054,"user":{"login":"nanosoldier","id":14142636,"avatar_url":"https://avatars.githubusercontent.com/u/14142636?v=3","gravatar_id":"","url":"https://api.github.com/users/nanosoldier","html_url":"https://github.com/nanosoldier","followers_url":"https://api.github.com/users/nanosoldier/followers","following_url":"https://api.github.com/users/nanosoldier/following{/other_user}","gists_url":"https://api.github.com/users/nanosoldier/gists{/gist_id}","starred_url":"https://api.github.com/users/nanosoldier/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nanosoldier/subscriptions","organizations_url":"https://api.github.com/users/nanosoldier/orgs","repos_url":"https://api.github.com/users/nanosoldier/repos","events_url":"https://api.github.com/users/nanosoldier/events{/privacy}","received_events_url":"https://api.github.com/users/nanosoldier/received_events","type":"User","site_admin":false},"created_at":"2017-01-01T01:43:55Z","updated_at":"2017-01-01T01:43:55Z","body":"[Your benchmark job](https://github.com/JuliaLang/julia/pull/19449#issuecomment-269886323) has completed - possible performance regressions were detected. A full report can be found [here](https://github.com/JuliaCI/BaseBenchmarkReports/blob/7828cf0ea3b0424a53a560b06c1955d75093a63b/70a38a8_vs_6484f4c/report.md). cc @jrevels"}}
{"actor":{"display_login":"nanosoldier"}}