2016-12-26 45 views
1

我在Rust中做了一些分析。因此,我有一個相當大的查找表,創建一個需要430,467,210字節的多維數組。我已經嘗試了很多次將它加載到Rust中,但我一直在獲取堆棧溢出。最近我使用Box瞭解了堆分配情況,並嘗試將我的文件讀入盒裝切片中。它仍然不工作:將文件讀入盒裝切片

let mut temp_buffer = Box::new([0u8; 430467210]); 
move_file.read(&mut *temp_buffer); 
+0

爲什麼你不mmap它?比照https://crates.io/crates/memmap – ArtemGr

回答

3

甲盒裝陣列仍然可以暫時堆放分配它移動到堆(特別是在非優化版本)之前陣列。爲確保起始分配堆,請使用向量代替:

let mut temp_buffer = vec![0u8; 430467210]; 
move_file.read(&mut temp_buffer); 
+0

哇,就這麼慢,它的工作原理。謝謝! –

+0

@wateriswet它不應該比陣列版本慢(除了預留堆空間所需的時間,這應該被實際讀數所淹沒)。你如何衡量時間?你是否正在編譯優化打開? – Vladimir