В настоящее время я пишу многомодульную программу в Haskell. Я нашел странную проблему, когда мои файлы не оптимизированы должным образом, хотя я прохожу через -O2
и так далее. Эти файлы являются общими 3D-математическими модулями. При компиляции по отдельности в .o эти модули оптимизируются правильно. Когда они скомпилированы как часть более крупной программы с использованием --make, они не оптимизированы правильно. Ядро совсем другое.
Я вложил несколько простых усеченных тестовых кодов в файл vector.hs:
data TestVector = TestVector !Double !Double !Double !Double
addVec :: TestVector -> TestVector -> TestVector
addVec (TestVector x1 y1 z1 w1) (TestVector x2 y2 z2 w2) =
TestVector (x1 + x2) (y1 + y2) (z1 + z2) (w1 + w2)
И импортировал его из основного...
import Vector
Этот код компилируется по-разному как отдельный .hs файл, а не при создании main.hs с помощью --make
Моя командная строка:
ghc -tmpdir tmp -hidir hi -odir obj -fext-core -fexcess-precision -funbox-strict-fields -threaded -rtsopts -fwarn-missing-signatures -Wall -O2 Main.hs -o main
Приветствия