php筆記之:有規(guī)律大文件的讀取與寫入的分析_PHP教程
推薦:php筆記之:php數(shù)組相關(guān)函數(shù)的使用本篇文章介紹了,php中數(shù)組相關(guān)函數(shù)的使用。需要的朋友參考下
這幾天在做一個東西.研究PHP讀取行數(shù)較多的文件(大概上百萬行).考慮到效率問題.進(jìn)行了簡單的研究.總結(jié)如下
第一條.file()函數(shù)的效率問題.
file()函數(shù)的效率很底下 如果是有規(guī)律的文件.比如每行一條相應(yīng)數(shù)據(jù).那么盡量不要是用file()函數(shù)
可以使用file_get_contents()然后用explode切割.這樣效率會快三分之一
舉個例子:
文件樣式如下:
11111\n
22222\n
33333\n
44444\n
55555\n
.....\n
nnnnnnnnnnn\n
如果用file($file)讀入的話.耗時很長.
可以用如下方法explode("\n",file_get_contents($file));效率會快很多.
第二條,數(shù)組的遍歷方式.
數(shù)據(jù)已經(jīng)被讀入數(shù)組了.下面就是遍歷了.
我所需要的是確定數(shù)組中有無一個值的存在,比如說44444是否在數(shù)組中.首先想到的是in_array()
不過實(shí)驗(yàn)了下發(fā)現(xiàn)效率很低下.于是參考別人的代碼想到一個辦法.把數(shù)組翻轉(zhuǎn)過來.變成所有值都為1.原來的值變成了索引.那么只要我在if里寫($arr[索引]==1)去判斷.果然效率高出很多.
在數(shù)組的遍歷過程中.如果數(shù)組個頭非常大,并且數(shù)組中的數(shù)據(jù)并不是全能用到的話,最好把用來遍歷的數(shù)組抽出來.這樣會提高很多效率.
第三條,數(shù)組的存儲.
把計(jì)算過后的數(shù)據(jù)保存起來.存在一個文件中.考慮了三種方法.一種是直接寫成php文件.一種是serialize,一種是json串.
第一種方式
直接寫入文件<?php 連接var_export($var)連接";"連接?>保存成PHP
需要的時候直接require進(jìn)來.
第二種方式.把變量serialize然后file_put_contents()進(jìn)入文件.使用的時候unserialize就ok.
第三種方式和第二種類似.只不過寫成了json串.
經(jīng)過測試.發(fā)現(xiàn)第二種效率最高.第三種其次.和第二種效率不相上下.第一種最慢.和我預(yù)想的差距很大.真是大跌眼鏡.
分享:php筆記之:php函數(shù)range() round()和list()的使用說明本篇文章介紹了,php函數(shù)range() round()和list()的使用說明。需要的朋友參考下
- PHPNOW安裝Memcached擴(kuò)展方法詳解
- php記錄頁面代碼執(zhí)行時間
- PHP中獎概率的抽獎算法程序代碼
- apache設(shè)置靜態(tài)文件緩存方法介紹
- php對圖像的各種處理函數(shù)代碼小結(jié)
- PHP 關(guān)于訪問控制的和運(yùn)算符優(yōu)先級介紹
- 關(guān)于PHP語言構(gòu)造器介紹
- php/js獲取客戶端mac地址的實(shí)現(xiàn)代碼
- php5.5新數(shù)組函數(shù)array_column使用
- PHP preg_match的匹配多國語言的技巧
- php 中序列化和json使用介紹
- php采集文章中的圖片獲取替換到本地
- 相關(guān)鏈接:
- 教程說明:
PHP教程-php筆記之:有規(guī)律大文件的讀取與寫入的分析
。