【PR】この記事には広告が含まれています。
- 4GBと8GBの違いが分からない
- 性能も大事だけど、お金はかけたくない
- そもそもメモリがよく分からない
Raspberry Pi 4のメモリ(RAM)は2GB、4GB、8GBの3種類が用意されています。メモリの数値以外は全く同じ仕様のため、どれを選ぶべきか迷うと思います。
この記事ではさまざまなテストを通して、3種類のRaspberry Pi 4の性能を比較します。
この記事を読めば、自分の選ぶべきモデルが分かるはずです。
この記事の結論
複数の作業を同時に行うような使い方をしない限り、性能に大差はありません。初心者は2GBモデルがおすすめです。ただ現時点で、2GBモデルは入手が難しい状況です。販売していない場合は、比較的流通量の多い4GBモデルを狙いましょう。
Raspberry Pi 4はメモリが3種類
Raspberry Pi 4はメモリが3種類用意されています。その他の仕様は全く同じで、メモリの数値だけが違います。海外では1GBモデルも存在しますが、日本で発売されていません。
メモリによる価格差
2023年2月時点でのスイッチサイエンスでの価格をまとめました。
メモリ | 参考価格 |
---|---|
Raspberry Pi 4 2GB | 8,250円 |
Raspberry Pi 4 4GB | 9,900円 |
Raspberry Pi 4 8GB | 13,200円 |
2GBと4GBモデルの価格差は約1,500円ですが、4GBと8GBモデルでは価格差が約3,000円となっています。8GBモデルは高額な印象が強いです。
メモリは作業スペース
そもそもメモリって何?
メモリを簡単に説明すると、コンピュータが仕事をするときに使う作業スペースの広さのことです。作業スペースが広い(メモリが大きい)と同時にたくさんの処理ができて、作業スピードが速くなります。
メモリが大きいからといって、写真や音楽などが大量に保存できるというわけではありません。写真や音楽などのデータを保存しておく場所は、ストレージと呼ばれています。
ラズベリーパイの場合、ストレージはmicroSDカードに該当します。
カタログの数値を見ただけでは、性能の違いは分かりにくいです。ここからは実機を使ったテストにより、それぞれのパフォーマンスを比較します。
ベンチマーク比較
コンピュータに一定の負荷をかけて性能を計測し、数値化することをベンチマークと呼びます。ラズパイでベンチマークテストを行うときはUnixBenchというソフトを使用するのが一般的です。
UnixBenchは以下のコマンドでインストールできます。
git clone https://github.com/kdlucas/byte-unixbench
UnixBenchを実行するには、まず以下のコマンドでUnixBenchのディレクトリに移動します。
cd byte-unixbench/UnixBench
その後、以下のコマンドを実行すると計測が開始されます。
./Run
計測は1時間程度かかるので、気長に待ちます。
3つのモデルのテスト結果は以下の通りです。
テスト結果はシングルコアとマルチコアで表示されます。CPUで処理を行う部分をコアといいます。コアの数が多いほど高速な処理が可能です。Raspberry Pi 4のコア数は4つですが、テストにより1つのコア(シングルコア)を使用した結果と、4つのコア(マルチコア)を使用した結果の2種類が算出されます。
数値から判断すると、4GBと8GBはあまり変わらない結果になりました。特にシングルコアではほぼ同じ結果です。コスパを考えると4GBが優位といえます。
詳細のテスト結果は以下の通りです。
2GBのスコア
4 CPUs in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 10348537.8 lps (10.0 s, 7 samples)
Double-Precision Whetstone 2519.9 MWIPS (9.9 s, 7 samples)
Execl Throughput 787.4 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 92709.0 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 26116.4 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 259074.0 KBps (30.0 s, 2 samples)
Pipe Throughput 81001.9 lps (10.0 s, 7 samples)
Pipe-based Context Switching 26359.0 lps (10.0 s, 7 samples)
Process Creation 959.4 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 2389.4 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 648.2 lpm (60.0 s, 2 samples)
System Call Overhead 424921.3 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 10348537.8 886.8
Double-Precision Whetstone 55.0 2519.9 458.2
Execl Throughput 43.0 787.4 183.1
File Copy 1024 bufsize 2000 maxblocks 3960.0 92709.0 234.1
File Copy 256 bufsize 500 maxblocks 1655.0 26116.4 157.8
File Copy 4096 bufsize 8000 maxblocks 5800.0 259074.0 446.7
Pipe Throughput 12440.0 81001.9 65.1
Pipe-based Context Switching 4000.0 26359.0 65.9
Process Creation 126.0 959.4 76.1
Shell Scripts (1 concurrent) 42.4 2389.4 563.5
Shell Scripts (8 concurrent) 6.0 648.2 1080.4
System Call Overhead 15000.0 424921.3 283.3
========
System Benchmarks Index Score 253.1
------------------------------------------------------------------------
Benchmark Run: 月 8月 15 2022 23:54:05 - 00:22:32
4 CPUs in system; running 4 parallel copies of tests
Dhrystone 2 using register variables 40741654.9 lps (10.0 s, 7 samples)
Double-Precision Whetstone 9934.9 MWIPS (10.0 s, 7 samples)
Execl Throughput 2437.6 lps (29.7 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 245963.6 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 69001.3 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 710659.6 KBps (30.0 s, 2 samples)
Pipe Throughput 310225.1 lps (10.0 s, 7 samples)
Pipe-based Context Switching 95736.4 lps (10.0 s, 7 samples)
Process Creation 4857.0 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 5287.7 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 699.9 lpm (60.1 s, 2 samples)
System Call Overhead 1640864.7 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 40741654.9 3491.1
Double-Precision Whetstone 55.0 9934.9 1806.3
Execl Throughput 43.0 2437.6 566.9
File Copy 1024 bufsize 2000 maxblocks 3960.0 245963.6 621.1
File Copy 256 bufsize 500 maxblocks 1655.0 69001.3 416.9
File Copy 4096 bufsize 8000 maxblocks 5800.0 710659.6 1225.3
Pipe Throughput 12440.0 310225.1 249.4
Pipe-based Context Switching 4000.0 95736.4 239.3
Process Creation 126.0 4857.0 385.5
Shell Scripts (1 concurrent) 42.4 5287.7 1247.1
Shell Scripts (8 concurrent) 6.0 699.9 1166.4
System Call Overhead 15000.0 1640864.7 1093.9
========
System Benchmarks Index Score 767.1
4GBのスコア
4 CPUs in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 12410229.0 lps (10.0 s, 7 samples)
Double-Precision Whetstone 3023.2 MWIPS (9.9 s, 7 samples)
Execl Throughput 948.7 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 110324.8 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 31434.7 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 295157.3 KBps (30.0 s, 2 samples)
Pipe Throughput 97483.1 lps (10.0 s, 7 samples)
Pipe-based Context Switching 32143.8 lps (10.0 s, 7 samples)
Process Creation 1094.0 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 2798.0 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 765.1 lpm (60.1 s, 2 samples)
System Call Overhead 506450.2 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 12410229.0 1063.4
Double-Precision Whetstone 55.0 3023.2 549.7
Execl Throughput 43.0 948.7 220.6
File Copy 1024 bufsize 2000 maxblocks 3960.0 110324.8 278.6
File Copy 256 bufsize 500 maxblocks 1655.0 31434.7 189.9
File Copy 4096 bufsize 8000 maxblocks 5800.0 295157.3 508.9
Pipe Throughput 12440.0 97483.1 78.4
Pipe-based Context Switching 4000.0 32143.8 80.4
Process Creation 126.0 1094.0 86.8
Shell Scripts (1 concurrent) 42.4 2798.0 659.9
Shell Scripts (8 concurrent) 6.0 765.1 1275.1
System Call Overhead 15000.0 506450.2 337.6
========
System Benchmarks Index Score 300.4
------------------------------------------------------------------------
Benchmark Run: 金 8月 19 2022 16:22:42 - 16:51:15
4 CPUs in system; running 4 parallel copies of tests
Dhrystone 2 using register variables 43786854.4 lps (10.0 s, 7 samples)
Double-Precision Whetstone 10638.8 MWIPS (11.0 s, 7 samples)
Execl Throughput 2681.5 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 261250.8 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 75618.7 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 713009.5 KBps (30.0 s, 2 samples)
Pipe Throughput 341787.4 lps (10.0 s, 7 samples)
Pipe-based Context Switching 105053.3 lps (10.0 s, 7 samples)
Process Creation 5319.9 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 5372.5 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 680.2 lpm (60.2 s, 2 samples)
System Call Overhead 1867592.4 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 43786854.4 3752.1
Double-Precision Whetstone 55.0 10638.8 1934.3
Execl Throughput 43.0 2681.5 623.6
File Copy 1024 bufsize 2000 maxblocks 3960.0 261250.8 659.7
File Copy 256 bufsize 500 maxblocks 1655.0 75618.7 456.9
File Copy 4096 bufsize 8000 maxblocks 5800.0 713009.5 1229.3
Pipe Throughput 12440.0 341787.4 274.7
Pipe-based Context Switching 4000.0 105053.3 262.6
Process Creation 126.0 5319.9 422.2
Shell Scripts (1 concurrent) 42.4 5372.5 1267.1
Shell Scripts (8 concurrent) 6.0 680.2 1133.6
System Call Overhead 15000.0 1867592.4 1245.1
========
System Benchmarks Index Score 819.2
8GBのスコア
4 CPUs in system; running 1 parallel copy of tests
Dhrystone 2 using register variables 12432249.1 lps (10.0 s, 7 samples)
Double-Precision Whetstone 3001.3 MWIPS (9.9 s, 7 samples)
Execl Throughput 939.3 lps (30.0 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 110570.8 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 31557.0 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 301014.5 KBps (30.0 s, 2 samples)
Pipe Throughput 97140.9 lps (10.0 s, 7 samples)
Pipe-based Context Switching 30796.7 lps (10.0 s, 7 samples)
Process Creation 1089.2 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 2813.2 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 758.1 lpm (60.1 s, 2 samples)
System Call Overhead 508381.0 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 12432249.1 1065.3
Double-Precision Whetstone 55.0 3001.3 545.7
Execl Throughput 43.0 939.3 218.4
File Copy 1024 bufsize 2000 maxblocks 3960.0 110570.8 279.2
File Copy 256 bufsize 500 maxblocks 1655.0 31557.0 190.7
File Copy 4096 bufsize 8000 maxblocks 5800.0 301014.5 519.0
Pipe Throughput 12440.0 97140.9 78.1
Pipe-based Context Switching 4000.0 30796.7 77.0
Process Creation 126.0 1089.2 86.4
Shell Scripts (1 concurrent) 42.4 2813.2 663.5
Shell Scripts (8 concurrent) 6.0 758.1 1263.6
System Call Overhead 15000.0 508381.0 338.9
========
System Benchmarks Index Score 299.4
------------------------------------------------------------------------
Benchmark Run: 金 8月 19 2022 18:05:29 - 18:33:59
4 CPUs in system; running 4 parallel copies of tests
Dhrystone 2 using register variables 43714107.5 lps (10.0 s, 7 samples)
Double-Precision Whetstone 10894.9 MWIPS (10.8 s, 7 samples)
Execl Throughput 2695.9 lps (29.9 s, 2 samples)
File Copy 1024 bufsize 2000 maxblocks 261598.5 KBps (30.0 s, 2 samples)
File Copy 256 bufsize 500 maxblocks 77634.5 KBps (30.0 s, 2 samples)
File Copy 4096 bufsize 8000 maxblocks 724538.5 KBps (30.0 s, 2 samples)
Pipe Throughput 351838.1 lps (10.0 s, 7 samples)
Pipe-based Context Switching 109618.0 lps (10.0 s, 7 samples)
Process Creation 5461.8 lps (30.0 s, 2 samples)
Shell Scripts (1 concurrent) 5592.7 lpm (60.0 s, 2 samples)
Shell Scripts (8 concurrent) 721.4 lpm (60.1 s, 2 samples)
System Call Overhead 1900892.5 lps (10.0 s, 7 samples)
System Benchmarks Index Values BASELINE RESULT INDEX
Dhrystone 2 using register variables 116700.0 43714107.5 3745.9
Double-Precision Whetstone 55.0 10894.9 1980.9
Execl Throughput 43.0 2695.9 627.0
File Copy 1024 bufsize 2000 maxblocks 3960.0 261598.5 660.6
File Copy 256 bufsize 500 maxblocks 1655.0 77634.5 469.1
File Copy 4096 bufsize 8000 maxblocks 5800.0 724538.5 1249.2
Pipe Throughput 12440.0 351838.1 282.8
Pipe-based Context Switching 4000.0 109618.0 274.0
Process Creation 126.0 5461.8 433.5
Shell Scripts (1 concurrent) 42.4 5592.7 1319.0
Shell Scripts (8 concurrent) 6.0 721.4 1202.3
System Call Overhead 15000.0 1900892.5 1267.3
========
System Benchmarks Index Score 839.0
室温によりスコアが変わる
テストをして気づいたことがあります。それは室温によりスコアが変化することです。室温の高い部屋では、4GBモデルと2GBモデルのスコアが逆転することがありました。
ラズパイはCPU温度が80℃を超えると、処理能力を下げてCPUを保護します。
ラズパイ本来のパフォーマンスを発揮するには以下の対策が有効です。
- ヒートシンク
- ヒートシンク型ケース
- ファン
起動時間比較
電源を入れてから、Raspberry Pi OSのデスクトップ画面が立ち上がるまでの時間を比較しました。条件を揃えるために、同じmicroSDカードを使用しています。
結果は以下の通りです。
起動時間 | |
---|---|
Raspberry Pi 4 2GB | 44秒 |
Raspberry Pi 4 4GB | 41秒 |
Raspberry Pi 4 8GB | 41秒 |
2GBモデルだけ44秒、4GBと8GBはともに41秒でした。
WEBページ読み込み速度比較
一般的にパソコンで重視される要素のひとつに、インターネットが快適に閲覧できることがあります。そこでYouTubeのトップ画面が開くまでの時間を比較しました。
結果は以下のとおりです。
YouTubeトップページ 読み込み時間 | |
---|---|
Raspberry Pi 4 2GB | 13秒 |
Raspberry Pi 4 4GB | 10秒 |
Raspberry Pi 4 8GB | 10秒 |
4GBと8GBモデルが同タイム。2GBモデルが3秒遅れという結果でした。インターネットを快適に使用したいのであれば、コスパ的には4GBモデルに軍配が上がります。
画像認識速度(FPS)比較
続いてはラズパイでよく使われる画像認識でのパフォーマンスを比較します。ラズパイにカメラを接続して、リアルタイムで映像の中から人物の顔を検出するプログラムを作りました。
パフォーマンスの計測にはFPS(フレームレート)という数値を使用します。FPSは「frames per second」の略で、1秒間に表示される画像の枚数を表す数値です。処理能力が高いほどFPSの数値は高くなります。
FPSの計測方法は以下の記事を参考にしました。
Raspberry Pi Python版OpenCVによるフレームレート算出方法
使用したプログラムは以下の通りです。
import cv2 as cv
import fps
gFrameRate = fps.FrameRate() # 初期化
fontcolor = (255,255,255)
fontface = cv.FONT_HERSHEY_SIMPLEX
fontthick = 2
HAAR_FILE = "/usr/local/lib/python3.9/dist-packages/cv2/data/haarcascade_frontalface_default.xml"
cascade = cv.CascadeClassifier(HAAR_FILE)
cap = cv.VideoCapture(0)
while(True):
ret, frame = cap.read()
fps = gFrameRate.get() # フレームレート取得
fps_str = '%4d' % fps
cv.putText(frame, fps_str, (10,25), fontface, 1.0, fontcolor, fontthick , cv.LINE_AA)
face = cascade.detectMultiScale(frame)
for x, y, w, h in face:
cv.rectangle(frame,(x,y),(x+w,y+h),(0,0,255),1)
cv.imshow('Capture',frame)
if cv.waitKey(1) & 0xFF == ord('q'):
break
cap.release()
cv.destroyAllWindows()
顔認識プログラムで参考にしたサイト【Python+OpenCV】簡単!たった十数行のプログラムで顔検出
プログラムを実行すると映像の左上に現在のFPSが表示されます。また画面内に人の顔を検出すると顔の部分を四角で囲みます。
各モデルのFPS測定結果は以下の通りです。
FPS | |
---|---|
Raspberry Pi 4 2GB | 12 |
Raspberry Pi 4 4GB | 13 |
Raspberry Pi 4 8GB | 12 |
どのモデルも12~13FPS前後で、ほぼ差は見られませんでした。
画像認識速度(FPS)比較(2つのカメラで同時に処理)
メモリの容量が大きいと、同時に複数のソフトを使用したときの処理が高速になります。そこで、先ほどと同じソフトを2つ同時に実行してFPSを比較してみました。カメラは2台使用しています。
測定結果は以下の通りです。
顔認識でのFPS合計 | |
---|---|
Raspberry Pi 4 2GB | 17 |
Raspberry Pi 4 4GB | 15 |
Raspberry Pi 4 8GB | 20 |
2GBと4GBは逆転してしまいましたが、8GBモデルは20FPSと良い結果が出ました。同時に複数の処理をする場合は、メモリ8GBの本領が発揮できることがわかります。
2GBモデルの結果
4GBモデルの結果
8GBモデルの結果
まとめ コスパで選ぶなら4GB
テスト結果をまとめると、ライトユーザーであれば2GBモデルで十分といえます。価格とスペックのバランスを両立させたい方には4GBがおすすめです。予算に余裕があり、複数のソフトを同時に処理させるといった使い方を想定してる方は、8GBモデルを選ぶと高速かつ快適に作業できるでしょう。
4GBっていいですね