3

PHPExcel と php orm を使用して、Web アプリケーション トランザクションに関するレポート用の Excel5 スプレッドシートを生成しています。

もっと書く必要があるので、Perl ソリューションがその Excel ファイルを生成するためのメモリ消費量が少なく、高速になるかどうかを知りたいですか?

たとえば、PHPExcel で日付、数値、文字列などのデータ型設定を使用して、列のサイズを変更して BG までの 186 行と列を作成すると、64 ビット、6 コア、ssd ドライブで 91 MB のメモリと 62 秒を要し、GB のメモリが多すぎました。 、Linux サーバー。(数字は orm を除く)

4

2 に答える 2

3

基本的な perl の使用法、関数などをあまりにも多くグーグルで調べた後、自分でテストすることにしました。

テストノート

ここに表示される統計は、私の質問とは大きく異なります。これは、行ごとに外部 API 呼び出しがあり、多くの時間がかかったためです。

PHPのメモリ統計は、Excelファイルを作成しない場合と作成する場合のピーク使用量の差であり、perlではvalgrindを使用しました。(ここでも、私の質問のメモリ統計は無視してください)

また、パイプを使用して PHP orm から perl に値を渡すことも (より高速であった可能性があります)、perl 内でクエリを実行することもありませんでした。これは、このテストのために perl を深く掘り下げたくなかったからです。json_encoded 文字列を php からファイルに書き込み、exec() を使用して perl スクリプトを呼び出し、そのファイルを読み取り、json 文字列を perl でデコードしました。

そして、両方のライブラリの最新バージョンを使用しました

テストされたデータ

基本的な太字の書式設定で 1 つのヘッダー行を作成
し、BG までの列を含む 180 行のデータ行を作成し、列の
半分に一連の日付と数値の書式を適用し、列の
自動サイズ変更を行います。

答え / 結果 (数回の実行の平均)

PHPExcel の場合: 4.94 秒、60,191 mb
Perl Spreadsheet::WriteExcel の場合: 0.01 秒、13,193 mb

于 2012-12-06T19:53:39.617 に答える
1

決定的な答えを得るには、同じように比較する必要がありますが、Spreadsheet::WriteExcel に関するいくつかの指針を次に示します。

  • Spreadsheet::WriteExcel は、スループット速度を最適化し、メモリ使用量を最小限に抑えるために作成されました。
  • パーサーが遅いため、Spreadsheet::WriteExcel で数式が遅くなります。可能であればそれらを避けるか、メソッドstore_formula()repeat_formula()メソッドを使用して高速化してください。詳細については、ドキュメントの数式を使用する際のパフォーマンスの向上に関するセクションを参照してください。
  • このオプションを使用しない限り、Excel::Writer::XLSX のパフォーマンスとメモリ使用量は、Spreadsheet::WriteExcel ほど良くありませんset_optimization()。Excel::Writer::XLSX ドキュメントの速度とメモリ使用量を参照してください。
  • Spreadsheet::WriteExcel Examples ドキュメントを使用して開始します。
  • パフォーマンス テストには、 bigfile.plの例の変形を使用できます。
于 2012-12-06T15:12:41.227 に答える