PHPでExcelとCSVの読み込み速度を比較してみる
PHPで、Excelファイルの読み込みに時間がかかるので、
CSVファイルの場合とどれくらい違うのか比較してみる。
100x100マスのExcelファイルを用意し、
全てのセルの数値を合計するプログラムを書いて、
どれくらい時間がかかるか比べてみる。
検証用プログラム
Excelの場合
<?php $time = microtime(true); // Excelの準備 $excel = new COM("excel.application") or die; $excel->DisplayAlerts = 0; // ファイルを開く $file = $excel->Workbooks->Open(dirname(__FILE__) . "/sample.xlsx"); // 各セルの値を合計する $count = 0; foreach ($file->Worksheets as $sheet) { for ($rows = 1; $rows <= 100; $rows++) { for ($cols = 1; $cols <= 100; $cols++) { $count += (int)$sheet->Cells($rows, $cols)->Value; } } } // ファイルを閉じる $file->Close(); // Excelを終了 $excel->Quit(); // 結果を表示 echo "合計=" . $count . "\n"; echo sprintf("%.4f秒", microtime(true) - $time);
CSVの場合
<?php $time = microtime(true); // ファイルを開く $file = fopen(dirname(__FILE__) . "/sample.csv", "r"); // 各セルの値を合計する $count = 0; while (($line = fgetcsv($file, 1000, ",")) !== false) { foreach ($line as $value) { $count += (int)$value; } } // ファイルを閉じる fclose($file); // 結果を表示 echo "合計=" . $count . "\n"; echo sprintf("%.4f秒", microtime(true) - $time);
結果
Excelの場合
> php excel.php 合計=1000000 3.9025秒 > php excel.php 合計=1000000 3.9993秒 > php excel.php 合計=1000000 3.8887秒 > php excel.php 合計=1000000 3.9860秒 > php excel.php 合計=1000000 3.9707秒
CSVの場合
> php csv.php 合計=1000000 0.0081秒 > php csv.php 合計=1000000 0.0081秒 >php csv.php 合計=1000000 0.0080秒 >php csv.php 合計=1000000 0.0081秒 >php csv.php 合計=1000000 0.0080秒