168 karma · joined February 28, 2012
I messed around with their stack and internals for a while about ten years ago... some remnants remain
https://github.com/NathanHowell/Sonority/tree/master/
For cases where GHC.Generics is an option, I always take GHC.Generics over TH. Yes, Generics can be slow at times too but this somewhat controllable with various GHC_OPTIONS. Either way, there is no loader and interpreter overhead... and a lot of Generics code compiles in less time than it takes TH just to load `text` or `aeson` ;-).
Other reasons:
* Some TH libraries add implicit dependencies that are not tracked by the build system
* GHCi/TH's loader is different than the OS loader, sometimes causing failures if a TH dependency touches C++ libraries
* No cross compiling ability... not an issue for me but it's painful for those targeting Javascript (via ghcjs), ARM or smaller x86 embedded systemsSee a related bug in GCC: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=56309
"conditional moves instead of compare and branch result in almost 2x slower code"
https://people.mpi-inf.mpg.de/~rgemulla/publications/schlege...
As SSE/AVX registers get wider and wider you might as well compare an entire cache line (or two) at a time. But the overhead of building the level order k-tree means you need to do a whole lot of lookups for each insert... so it doesn't apply to that many problems. Unless you're building a search engine. Then it applies a lot.
They were in use (at least TransmitFile was) by IIS long before http.sys was conceived.
main :: IO ()
main = do
let go :: Double -> Double -> Double
go !i !s
| i < 100000000 = go (i+1) (s + 1/i)
| otherwise = s
printf "Almost infinity is %g\n" (go 1 0)
Inner loop assembly: LBB0_4: ## %c3Sk
movaps %xmm3, %xmm0
divsd %xmm1, %xmm0
addsd %xmm3, %xmm1
ucomisd %xmm1, %xmm4
addsd %xmm2, %xmm0
movaps %xmm0, %xmm2
ja LBB0_4
jmp LBB0_2https://github.com/NathanHowell/Sonority https://github.com/NathanHowell/upd2 <-- update image extractor
A few of us went a bit further, found some telnet backdoors and cracked the root password.
Here are the official docs: http://msdn.microsoft.com/en-us/library/windows/desktop/ms72...
Good news is that performance is much, much better with 0.61 than prior releases. Both for RADOS and CephFS. We'll probably upgrade to 0.67 in the next few weeks and it's probably time to upgrade to the 3.10 kernel as well for btrfs fixes and to kick the tires on the kernel fs client again.