[英]PHP big array manipulation
在讀取整個數組中的整個文件(如十六進制)后,我在內存中存儲了一個很大的數組:
$bin_content = fread(fopen($filename,"r"),filesize($filename));
$hex_decode = explode(" ",chunk_split(bin2hex($bin_content),2," "));
unset($bin_content);
function myfunction($i) {
global $hex_decode;
// stuff here
}
當我創建一個使用此$hex_decode
數組作為全局函數的函數時,腳本運行得像永遠(非常慢),但是如果我調用該函數,則將$hex_decode
作為參數傳遞( myfunction($i,$hex_decode) instead of myfunction($i) in which $i is a pointer
),則速度更快。
誰能解釋為什么? 還有什么方法可以通過以其他方法讀取文件來加快腳本速度。
我需要將整個文件放在該數組中,而不是逐行顯示,因為我正在構建自定義的ASN.1解碼器,所以我需要全部包含它。
還有什么方法可以通過以其他方法讀取文件來加快腳本速度。
我個人將使用流過濾器對讀取的文件進行塊讀取和轉換,而不是一次性讀取整個文件,然后使用內存中的整個文件進行轉換和修復,從而處理ASN的所有過濾和修復.1流過濾器內的結構。
我知道這不是對實際問題的直接回答,而是對上面的單引號。 但它可以提供較少的內存消耗替代方法。
StackOverflow已經有一個類似的問題,請看一下:
如果文件很大,則可以考慮采用內存保守的方法。 ASN.1通常以類型-長度-值的結構進行編碼,這意味着您不必將整個內容存儲在內存中,而只需要在任何給定時間處理所需的數據即可。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.