{"action":"created","issue":{"url":"https://api.github.com/repos/snowleopard/shaking-up-ghc/issues/174","labels_url":"https://api.github.com/repos/snowleopard/shaking-up-ghc/issues/174/labels{/name}","comments_url":"https://api.github.com/repos/snowleopard/shaking-up-ghc/issues/174/comments","events_url":"https://api.github.com/repos/snowleopard/shaking-up-ghc/issues/174/events","html_url":"https://github.com/snowleopard/shaking-up-ghc/issues/174","id":126971231,"number":174,"title":"Precompile interface file option (better paralellize build)","user":{"login":"kgardas","id":578505,"avatar_url":"https://avatars.githubusercontent.com/u/578505?v=3","gravatar_id":"","url":"https://api.github.com/users/kgardas","html_url":"https://github.com/kgardas","followers_url":"https://api.github.com/users/kgardas/followers","following_url":"https://api.github.com/users/kgardas/following{/other_user}","gists_url":"https://api.github.com/users/kgardas/gists{/gist_id}","starred_url":"https://api.github.com/users/kgardas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kgardas/subscriptions","organizations_url":"https://api.github.com/users/kgardas/orgs","repos_url":"https://api.github.com/users/kgardas/repos","events_url":"https://api.github.com/users/kgardas/events{/privacy}","received_events_url":"https://api.github.com/users/kgardas/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/snowleopard/shaking-up-ghc/labels/enhancement","name":"enhancement","color":"84b6eb"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":47,"created_at":"2016-01-15T22:26:49Z","updated_at":"2016-01-17T21:46:29Z","closed_at":null,"body":"I've done small experiment on 6 core xeon comparing shake -j12 and gmake -j12 build on Solaris 11.2 on the same code base.\r\nShake:\r\n```\r\nreal    34m11.983s\r\nuser    138m41.855s\r\nsys     40m42.177s\r\n```\r\nGmake:\r\n```\r\nreal    39m7.557s\r\nuser    167m17.491s\r\nsys     45m34.928s\r\n```\r\nI've disabled haddock in gmake build, but I'm still not sure both gmake and shake build things in equal way, I'm afraid gmake may build more so basically performance of builds is let say the same.\r\nIn https://mail.haskell.org/pipermail/ghc-devs/2015-March/008474.html I've provided some data about performance of highly parallel build. As you can see performance was quite bad at that time but it looks like shake based build is around the same perf. My idea from following builds rolling on the console is that sometimes build just waits on one or two files for which it needs to have interface file generated since this is dependency for a set of other files which need to wait in a queue instead of being compiled quickly. So my idea is if we somehow are able to divide actual file compilation and generation of the file's interface file, then the performance of the parallel build may be much higher. It looks like GHC supports this option with -fno-code -fwrite-interface command-line options. Now the question is how hard would be to add that capability to shake-based build? Thanks a lot for consideration!"},"comment":{"url":"https://api.github.com/repos/snowleopard/shaking-up-ghc/issues/comments/172386199","html_url":"https://github.com/snowleopard/shaking-up-ghc/issues/174#issuecomment-172386199","issue_url":"https://api.github.com/repos/snowleopard/shaking-up-ghc/issues/174","id":172386199,"user":{"login":"kgardas","id":578505,"avatar_url":"https://avatars.githubusercontent.com/u/578505?v=3","gravatar_id":"","url":"https://api.github.com/users/kgardas","html_url":"https://github.com/kgardas","followers_url":"https://api.github.com/users/kgardas/followers","following_url":"https://api.github.com/users/kgardas/following{/other_user}","gists_url":"https://api.github.com/users/kgardas/gists{/gist_id}","starred_url":"https://api.github.com/users/kgardas/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/kgardas/subscriptions","organizations_url":"https://api.github.com/users/kgardas/orgs","repos_url":"https://api.github.com/users/kgardas/repos","events_url":"https://api.github.com/users/kgardas/events{/privacy}","received_events_url":"https://api.github.com/users/kgardas/received_events","type":"User","site_admin":false},"created_at":"2016-01-17T21:46:28Z","updated_at":"2016-01-17T21:46:28Z","body":"@ezyang by your last note about DynFlags, do you suggest this also means that DynFlags.hi will not be generated that soon as I hope so? Well, will need to test this in real for sure..."}}