スペースで区切られた整数のリストを標準出力に出力したいと考えています。リストの生成が速いので、この問題を [1..200000] のシーケンスで解決しようとしました。
C では、次のように実装できます。
#include "stdio.h"
int main()
{
int i;
for(i = 0; i <= 200000; ++i)
printf("%d ", i);
return 0;
}
私が実装できる Haskell で最速のソリューションは、約 3 倍遅くなります。
import Data.List (intercalate)
main = putStr . intercalate " " . map (show) $ [1..(200000)]
いくつかの方法で ByteStrings を試しましたが、さらに遅くなりました。大きな問題は、show を使用した整数の文字列への変換 (または ByteStrings への変換) のようです。
Cに接続せずにこれを高速化する方法について何か提案はありますか? 複雑になりすぎないようにしてください (可能な限り短く美しく、他の Haskell モジュールを使用してもかまいません)。