Vì vậy, tôi có khoảng 8MB tệp của mỗi tệp có 6 int được phân cách bằng dấu cách.Haskell Cách hiệu quả hơn để phân tích cú pháp tệp của các dòng chữ số
phương pháp hiện tại của tôi đối với phân tích này là:
tuplify6 :: [a] -> (a, a, a, a, a, a)
tuplify6 [l, m, n, o, p, q] = (l, m, n, o, p, q)
toInts :: String -> (Int, Int, Int, Int, Int, Int)
toInts line =
tuplify6 $ map read stringNumbers
where stringNumbers = split " " line
và toInts lập bản đồ trên
liftM lines . readFile
mà sẽ trả cho tôi một danh sách các hàng. Tuy nhiên, khi tôi chạy ứng dụng này, sẽ mất gần 25 giây để tải tệp và phân tích cú pháp. Bất kỳ cách nào tôi có thể tăng tốc độ này lên? Tệp chỉ là văn bản thuần túy.
bạn có thể cung cấp thêm một chút thông tin: toàn bộ chương trình làm việc, đầu vào, cách bạn chạy nó, bạn có biên dịch nó (với tối ưu hóa) hay chạy nó trong 'ghci'. Bạn có biết về 'Data.Bytestring' và' Data.Vector'. Ngoài ra 'đọc' là khá chậm, ít nhất đó là những gì tôi đã nghe. – epsilonhalbe
Xem thêm http://stackoverflow.com/questions/8366093/how-do-i-parse-a-matrix-of-integers-in-haskell/8366642 –