我在Rust中做了一些分析。因此,我有一個相當大的查找表,創建一個需要430,467,210字節的多維數組。我已經嘗試了很多次將它加載到Rust中,但我一直在獲取堆棧溢出。最近我使用Box
瞭解了堆分配情況,並嘗試將我的文件讀入盒裝切片中。它仍然不工作:將文件讀入盒裝切片
let mut temp_buffer = Box::new([0u8; 430467210]);
move_file.read(&mut *temp_buffer);
我在Rust中做了一些分析。因此,我有一個相當大的查找表,創建一個需要430,467,210字節的多維數組。我已經嘗試了很多次將它加載到Rust中,但我一直在獲取堆棧溢出。最近我使用Box
瞭解了堆分配情況,並嘗試將我的文件讀入盒裝切片中。它仍然不工作:將文件讀入盒裝切片
let mut temp_buffer = Box::new([0u8; 430467210]);
move_file.read(&mut *temp_buffer);
甲盒裝陣列仍然可以暫時堆放分配它移動到堆(特別是在非優化版本)之前陣列。爲確保起始分配堆,請使用向量代替:
let mut temp_buffer = vec![0u8; 430467210];
move_file.read(&mut temp_buffer);
哇,就這麼慢,它的工作原理。謝謝! –
@wateriswet它不應該比陣列版本慢(除了預留堆空間所需的時間,這應該被實際讀數所淹沒)。你如何衡量時間?你是否正在編譯優化打開? – Vladimir
爲什麼你不mmap它?比照https://crates.io/crates/memmap – ArtemGr