3 boyutta bir arama tablosu kullanmam gerekiyor. Masanın kendisi 73x73x73 (389017) çift değerlere sahiptir.GHC büyük arama tablolarını işleyemiyor
module Hammer.Texture.Table3D where
import qualified Data.Vector as V
import qualified Data.Vector.Unboxed as U
import Data.Vector.Unboxed (Vector)
table3D :: V.Vector (V.Vector (Vector Double))
table3D = V.fromList [table0, table1, ... table72]
table0 = V.fromList $ map U.fromList [
[1.973921e+01, 0.000000e+00, ... 0.000000e+00],
.....
[1.973921e+01, 0.000000e+00, ... 0.000000e+00]]
.....
table72 = V.fromList $ map U.fromList [
[1.973921e+01, 0.000000e+00, ... 0.000000e+00],
.....
[1.973921e+01, 0.000000e+00, ... 0.000000e+00]]
sorun GHC vektör çift veya [çift] Bu boyut işleyemez yani, GHC derleme çok fazla zaman alır (~ 2 dakika) kadar, en sonunda, bellek darbeler. Çok büyük bir String ([Char]) için iyi çalıştığından, GHC'de veya bazı hatalarda bir bellek sızıntısı var gibi görünüyor.
GHC kullanarak "büyük" arama tabloları oluşturmak için hangi çözümler mevcuttur (Çift tip)? İki olasılık
Bunun yerine "Data.Array" veya "Data.Array.Repa" gibi dizileri kullanmayı denediniz mi? O zaman bir vektör –
bir sabit boyutta bir kapsayıcıya ihtiyacınız var gibi görünüyor ... Bu, bu metin biçiminde tüm tablo ile 10 MB kaynak dosya gibi bir? Neden böyle yaparsın? Çalışma zamanında böyle büyük 'Vector's üretmek için bir sorun olmaz, bir ikili dosyadan çok daha verimli bir şekilde okuyun. Ben sadece kaynağa koyarak itiraf etmeliyim ki, 'IO'dan kolayca uzak durmanın iyi bir yolu. – leftaroundabout
Dize ile düzgün çalışıyorsa ... neden dizeleri (çiftler değil) sabit değil? (sonra, 'oku', elbette), çirkin ama belki de iyi çalışır ... – josejuan