5

私はGlossを使ってHaskellでRTSゲームを作成していますが、非常に単純なプログラムでさえ、実行するにつれてますます多くのメモリを占有することに気づきました。たとえば、次のプログラムはメモリ使用量を徐々に増やします(1秒あたり約0.025MBが必要になります)。

module Main (
    main
)
where

import Graphics.Gloss
import Graphics.Gloss.Interface.IO.Game

main = 
    playIO (InWindow "glossmem" (500, 500) (0,0)) white 10 0
    (\world -> return (translate (-250) 0 (text $ show world)))
    (\event -> (\world -> return world))
    (\timePassed -> (\world -> return $ world + timePassed))

実行時にヒープサイズを制限しようとしましたが、制限に達するとプログラムがクラッシュします。より複雑な世界では、この動作がパフォーマンスの問題になるのではないかと心配していますが、これが問題にならないように光沢を使用する方法はありますか?または、仕事に間違ったツールを使用していますか?

4

1 に答える 1

4

おかげで、私はこれをgloss-1.7.7.1で修正しました。これは、アニメーションのフレームタイミングを管理するコードで、典型的な怠惰によって引き起こされるスペースリークでした。これで、サンプルプログラムは一定のスペースで実行されます。

于 2012-11-26T05:30:54.780 に答える