[Haskell-iPhone] FFI calls into Haskell taking a long time
James Parker
jp at jamesparker.me
Wed Apr 6 21:25:37 UTC 2016
Hi,
I’m exporting a Haskell function that generates RSA keys for an iOS application. I’m using the crypto-pubkey and crypto-random packages. Unfortunately, the key generation is taking an extremely long time (around 5 minutes) when run in the simulator (XCode 7.2.1). When running Haskell code through Criterion, key generation only takes 110ms. When benchmarking a c program that links the Haskell FFI library (on my x86 laptop), key generation takes about 130ms.
Does anyone have any ideas why this is so much slower on the simulator? I thought maybe there was an issue with running out of randomness, so I tried creating a fixed seed by using `createTestEntropyPool`, but this did not make any difference. I’ve included the relevant key generate function below.
gen :: MonadRandom m => m (RSA.PublicKey, RSA.PrivateKey)
gen = withCPRG $ \prg -> return $ RSA.generate prg 256 65537
instance MonadRandom IO where
type MonadCPRG IO = SystemRNG
withCPRG f = do
entropy <- createEntropyPool
(res, _) <- f $ cprgCreate entropy
return res
I’d appreciate any help.
Thanks!
James
More information about the iPhone
mailing list