PHP_PHP チュートリアルにおけるファイルの読み書きとデータベースの読み書きの効率の比較と共有
この質問も最近頭に浮かびました。ファイルやデータベースの読み取りはどれくらい速いですか? Tianyuan も検索しましたが、この質問に答えた人はいませんでした。この記事は実際の内容に関するものである可能性があります。時間の都合上、Tianyuan はまだ PHP でテストを行っていません。次回時間があれば、この記事に C/C++ のテストを補足します。PHP の基礎となる分析も行う必要があります。したがって、この 2 つの環境テストの結果は類似していると推定されます。次に、テストのプロセスと結果を見てみましょう。
テスト手順は次のとおりです:
注 1: データベース読み取りステートメントはシンプル パケット関数を 2 回呼び出すため、読み取りファイルも 2 回の連続した呼び出しに変更されます。これは最初のものであり、一意のインデックスを持ちます。
注2: 4Kデータで1回、再整形データで1回の計2回テストしました
set_time_limit(0);
function fnGet($filename)
{
$content = file_get_contents($filename);
return $content;
}
function fnGetContent($ filename)
{
$content = fnGet($filename);
return $content;
}
$times=100000;
echo 'データベース クエリ結果:
';
//- ---- ------------------------
$begin=fnGetMicroTime();
for($i=0;$i< ;$times; $i++)
{
$res=$dbcon->mydb_query("SELECT log_Content FROM blog WHERE log_ID='1'");
$row=$dbcon->mydb_fetch_row($res);
$content=$ row[0];
}
echo 'fetch_row '.$times.' 回: '.(fnGetMicroTime()-$begin).'秒
//---------------------------------
$begin=fnGetMicroTime();
for( $i=0;$i<$times;$i++)
{
$res=$dbcon->mydb_query("SELECT log_Content FROM blog WHERE log_ID='1'");
$row=$dbcon- > mydb_fetch_array($res);
$content=$row['log_Content'];
}
echo 'fetch_array '.$times.' 時間: '.(fnGetMicroTime()-$begin) ) .'秒
';
//---------------------------- --- --
$begin=fnGetMicroTime();
for($i=0;$i<$times;$i++)
{
$res=$dbcon->mydb_query("SELECT log_Content FROM blog WHERE log_ID ='1 '");
$row=$dbcon->mydb_fetch_object($res);
$content=$row->log_Content;
}
echo 'fetch_object '.$times.' : '.(fnGetMicroTime()-$begin).'秒
';
//----------------- - ---------------
$dbcon->mydb_free_results();
$dbcon->mydb_disconnect();
fnWriteCache('test.txt',$content);
echo ' ファイルのテスト結果を直接読み取ります:
';
//---------------------------- ---
$begin=fnGetMicroTime();
for($i=0;$i<$times;$i++)
{
$content = fnGetContent('test.txt');
}
echo 'file_get_contents 読み取り直接'. $times.'Time:'.(fnGetMicroTime()-$begin).'秒
';
//------ ------------------------
$begin=fnGetMicroTime();
for($i=0;$i{
$fname = 'test.txt';
if(file_exists($fname))
{
$fp=fopen($fname,"r");//flock($fp,LOCK_EX);
$ file_data=fread($fp, filesize($fname));//rewind($fp);
fclose($fp);
}
$content = fnGetContent('test.txt');
}
echo 'fopen '.$times.' 回を直接読み取ります: '.(fnGetMicroTime()-$begin).'秒
';
4Kサイズデータのクエリ結果:
fetch_row 100000回: 16.737720012665秒
fetch_array 100000回: 16.661195993423秒
fetch_object 100000回: 16.77506589889 5 秒
ファイルを直接読み取る テスト結果:
file_get_contents を直接読み取る 100000 回 時間: 5.4631857872009 秒
fopen 直接読み取り時間: 11.463611125946 秒
Shape ID クエリ結果:
fetch_row 100000 回 時間: 12.812072038651 秒
fetch_array 100000 回 時間: 12.667390108109 秒
fetch_object 100000時間 時間: 12.988099098206 秒
ファイルを直接読み取る テスト結果:
file_get_contents を直接読み取る 時間100,000 回: 5.6616430282593 秒
fopen の直接読み取り 100,000 回: 11.542816877365 秒
テストの結論:
1. ファイルを直接読み取る方がデータベースクエリよりも効率的であり、接続時間と切断時間は記事に含まれていません。
2. 一度に読み取られるコンテンツが大きいほど、ファイルを直接読み取ることの利点はより明らかです (ファイルの読み取りにかかる時間はわずかに増加しますが、これはファイル ストレージの継続性とクラスター サイズに関係します)。この結果はまさに Tianyuan と同じです。逆に、MYSQL には大きなファイルを読み取るための追加の操作がある可能性があることを示しています (単純な代入変換だけであれば、時間は 30% 近く増加しています)。
3. ファイルの書き込みや INSERT 時にテストを行わないと、データベースの効率は悪化するだけであると推測できます。
4. 小さな構成ファイルがデータベース機能を使用する必要がない場合は、アクセス用に別のファイルに保存する方が適しています。別のデータ テーブルやレコードを作成する必要がなく、保存する方が便利です。ファイル内の画像や音楽などの大きなファイルの場合は、パスやサムネイルなどのインデックス情報のみをデータベースに入れる方が合理的です。
5. PHP でファイルを読み込むだけであれば、fopen や fclose よりも file_get_contents の方が効率的で、この関数の存在を判断する時間を除けば約 3 秒かかります。
6. fetch_row と fetch_object は fetch_array から変換する必要があります。私は PHP のソース コードを見ていませんが、これはインターネットで言われていることに反するようです。
実際、このテストを行う前に、私は個人的な経験に基づいて結果を大まかに把握していました。テストが完了した後、私は啓発された感覚を感じました。プログラムの効率が主要なプロセスの効率と同等であり、キャッシュなどの手段が含まれていないと仮定すると、MSYQL プロセスに関係なく、どの種類のデータの読み書きもファイルを直接操作するほど高速ではありません。 (レコード ストアは同等です)、もちろん、これらすべての前提として、コンテンツは読み取り専用であり、並べ替えや検索操作とは何の関係もありません。

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











Windows 11 22H2 の新しいタスク マネージャーは、パワー ユーザーにとって有益です。実行中のプロセス、タスク、サービス、ハードウェア コンポーネントを監視するための追加データにより、より優れた UI エクスペリエンスが提供されるようになりました。新しいタスク マネージャーを使用している場合は、新しい生産性モードに気づいたかもしれません。それは何ですか? Windows 11 システムのパフォーマンスの向上に役立ちますか?確認してみましょう! Windows 11 の生産性モードとは何ですか?生産性モードはタスク マネージャーのタスクの 1 つです

DeepMind の AI エージェントが再び稼働します。注目してください、BBF という名前のこの男は、わずか 2 時間で 26 個の Atari ゲームをマスターしました。彼の効率は人間と同等であり、すべての先任者を上回っています。ご存知のとおり、AI エージェントは強化学習を通じて問題を解決するのに常に効果的ですが、最大の問題は、この方法が非常に非効率で、探索に長い時間がかかることです。画像 BBF によってもたらされた画期的な進歩は、効率の点にあります。フルネームが Bigger、Better、Faster と呼ばれるのも不思議ではありません。さらに、トレーニングは 1 枚のカードだけで完了でき、必要な計算能力も大幅に削減されます。 BBF は Google DeepMind とモントリオール大学によって共同提案され、データとコードは現在オープンソースです。到達可能な最高の人間

PyCharm は、コードの作成、デバッグ、プロジェクト管理のために Python 開発者によって広く使用されている強力な Python 統合開発環境 (IDE) です。実際の開発プロセスでは、ほとんどの開発者は、開発効率を向上させる方法、チームメンバーと開発にどのように協力するかなど、さまざまな問題に直面します。この記事では、開発者がリモート開発で PyCharm をより効果的に使用し、作業効率を向上させるのに役立つ、PyCharm のリモート開発の実践的なガイドを紹介します。 1. PyChでの準備作業

インターネットの急速な発展に伴い、データベースの重要性がますます高まっています。私たちは Java 開発者としてデータベース操作に関わることが多く、データベース トランザクション処理の効率はシステム全体のパフォーマンスと安定性に直接関係します。この記事では、データベースのトランザクション処理効率を最適化し、開発者がシステムのパフォーマンスと応答速度を向上させるために Java 開発で一般的に使用されるいくつかのテクニックを紹介します。バッチ挿入/更新操作 通常、データベースに 1 つのレコードを一度に挿入または更新する効率は、バッチ操作の効率よりも大幅に低くなります。したがって、一括挿入/更新を実行する場合、

Edge などの Chromium ベースのブラウザーは多くのリソースを使用しますが、Microsoft Edge で効率モードを有効にしてパフォーマンスを向上させることができます。 Microsoft Edge Web ブラウザーは、そのささやかな始まりから長い道のりを歩んできました。最近、Microsoft は、PC 上のブラウザの全体的なパフォーマンスを向上させるように設計された新しい効率モードをブラウザに追加しました。効率モードは、バッテリー寿命を延ばし、システム リソースの使用量を削減します。たとえば、Google Chrome や Microsoft Edge など、Chromium で構築されたブラウザは、RAM と CPU サイクルを大量に消費することで有名です。したがって、順番に

StableDiffusion はオープンソースの深層学習モデルで、主な機能はテキスト記述を通じて高品質な画像を生成することであり、グラフ生成、モデルの結合、モデルのトレーニングなどの機能をサポートしています。このモデルの操作インターフェイスは次の図に示されています。画像の生成方法. 以下は、水を飲む鹿の画像を作成するプロセスの紹介です. 画像を生成する際には、プロンプトワードとネガティブプロンプトワードに分けられます. プロンプトワードを入力する際には、それを説明する必要があります希望するシーン、オブジェクト、スタイル、色を明確に説明してください。たとえば、単に「鹿が水を飲む」と言うのではなく、「小川があり、鬱蒼とした木の隣にあり、その小川の隣に鹿が水を飲んでいます」と言うと、否定的なプロンプトの言葉が逆の方向になります。例:建物も人も橋も柵もありません。また、説明が曖昧すぎると不正確な結果が生じる可能性があります。

サブネット マスクの役割とネットワーク通信効率への影響 はじめに: インターネットの普及により、ネットワーク通信は現代社会に不可欠な部分となっています。同時に、ネットワーク通信の効率化も注目されています。ネットワークの構築と管理のプロセスにおいて、サブネット マスクは重要かつ基本的な構成オプションであり、ネットワーク通信において重要な役割を果たします。この記事では、サブネットマスクの役割とネットワーク通信効率への影響について紹介します。 1. サブネットマスクの定義と機能 サブネットマスク(subnetmask)

タイトル: Python は生活をより便利にします: この言語をマスターして仕事の効率と生活の質を向上させましょう 強力で学びやすいプログラミング言語として、Python は今日のデジタル時代にますます人気が高まっています。 Python は、プログラムを作成したりデータ分析を実行したりするためだけでなく、私たちの日常生活でも大きな役割を果たします。この言語をマスターすると、仕事の効率が向上するだけでなく、生活の質も向上します。この記事では、具体的なコード例を使用して、日常生活における Python の幅広い応用例を示し、読者の役に立つようにします。
