snapframework / snap

Top-level package for the official Snap Framework libraries, includes the snaplets API as well as infrastructure for sessions, auth, and templates.
http://snapframework.com/
BSD 3-Clause "New" or "Revised" License
455 stars 68 forks source link

Update tech-empower versions and configuration options #196

Open flip111 opened 6 years ago

flip111 commented 6 years ago

snap (and also other haskell frameworks) perform quite poorly in these benchmarks, even below some ruby, python, js, php solutions.

https://www.techempower.com/benchmarks/#section=data-r14&hw=ph&test=json https://www.techempower.com/benchmarks/#section=data-r14&hw=ph&test=db https://www.techempower.com/benchmarks/#section=data-r14&hw=ph&test=query https://www.techempower.com/benchmarks/#section=data-r14&hw=ph&test=fortune https://www.techempower.com/benchmarks/#section=data-r14&hw=ph&test=update https://www.techempower.com/benchmarks/#section=data-r14&hw=ph&test=plaintext

the source code can be found here https://github.com/TechEmpower/FrameworkBenchmarks/tree/master/frameworks/Haskell/snap

imalsogreg commented 6 years ago

Good catch. It looks like maybe the admins did a cabal freeze recently, and that their version of snap is pre 1.0: https://github.com/TechEmpower/FrameworkBenchmarks/commit/cb8e14980936ccd9e42b651d253832bdd47c2db4

flip111 commented 6 years ago

An update would be useful ye ... but i don't think it would help much in the performance..

imalsogreg commented 6 years ago

There's a chance of an sizable impact on performance. snap-server is built on a new iterator library. The server may be misconfigured, too. May I change the name of this ticket, to "Update tech-empower versions and configuration options"? :)

mightybyte commented 6 years ago

@flip111 Thanks for bringing this up. The last time I looked at this benchmark it seemed that JSON parsing and DB binding performance had a lot more to do with how you score than the framework. I personally won't have time to work on this any time soon, but it would be great if someone else did.

flip111 commented 6 years ago

benchmark is now updated to lts-10.0 https://github.com/TechEmpower/FrameworkBenchmarks/pull/3152 You can find the performance difference in that pull request. On first glance there seems to be some performance improvement ... but the results.json files are so big that i didn't look into it too much. I could collect some profile information with profiteur possibly.