252 文字
1 分
Benchmarking ActiveRecord and mysql2

概要#

  • RubyActiveRecordを使う場合と使わない場合におけるベンチマークがWebを探しても無かったので測ってみました。
  • 純粋な比較は難しいので、あくまでも参考値として見ていただければと思います。
  • 比較
    • activerecord (5.2.4.3)
    • mysql2 (0.5.3)

実験#

測定方法#

  • 純粋な比較が難しいので、とりあえず1行だけプライマリーキーで1行取得して変数に入れます。
  • usersテーブルは67カラムあります。
  • レコードのデータは、文字列に変換すると576バイトです。
  • 実行環境: ruby 2.6.6p146, MySQL: 5.7.29
  • on Docker on macos.

Activerecordの結果#

6.6秒

pry(main)> puts Benchmark.measure { 10000.times { User.find(1) } }
3.223594 0.814001 4.037595 ( 6.624353)

mysql2の結果#

3.5秒

pry(main)> puts Benchmark.measure { 10000.times { client.query('select * from users where id = 1').first } }
1.157955 0.410513 1.568468 ( 3.569280)

mysqlコマンドの結果#

事前に1万行のクエリーを書いておいたファイルを実行してみました。

2.9秒

Terminal window
% time (cat select.sql | mysql -u root --password=$MYSQL_ROOT_PASSWORD test_database -h db > /dev/null)
real 0m2.935s
user 0m0.340s
sys 0m0.529s

まとめ#

Benchmarking ActiveRecord and mysql2
https://blog.teraren.com/posts/benchmarking-activerecord-and-mysql2/
作者
Yuki Matsukura
公開日
2020-07-06
ライセンス
CC BY-NC-SA 4.0

コメント