スクリプトのパフォーマンス 50


Rubyはスクリプト言語です
スクリプト言語は、逐次実行型のプログラミング言語ですから、コンパイラ言語と比較すると実行速度が遅いという欠点があります
このため、スクリプト言語は、大量のデータ処理には使えないという意見もありますが、最近のパーソナルコンピュータの高速化により、パフォーマンスは大きく改善されつつあります
そこで、参考データとして以下に「展開一番」スクリプトの実行時間(単位:秒)を掲載します
なお、この数値は厳密な測定をしたわけでもなく平均を計算したものでもありません、おおよその目安と考えて下さい
また、「展開一番」のデータとユーザスクリプトをUSB接続のHDDに置いているため、データの書き込みが多い処理では時間がかかっていることにも留意して下さい

(追記 2012/05/31)
SSD(Solid State Drive)搭載のノートパソコンを購入したので、実行速度を測ってみました
下記(2009/11/12作成)の
「参考6」赤色がその結果です、CPUのクロック周波数を考慮すればRamDiskに匹敵するスピードが出ているような気もしますが・・・

(追記 2010/06/26)
データの読み書きが早いと言われる RamDisk を作成し、実行速度を測ってみました
下記(2009/11/12作成)の
「参考5」オレンジ色がその結果で、当該環境下で約13%高速化されました〔1-RamDisk実行時間/HDD実行時間〕


2009/11/12 作成

仕訳型 〔勘定科目数 155〕 2科目仕訳 1科目仕訳
仕訳行数〔フィールド数 2科目仕訳:13、1科目仕訳:11〕 16,000行 32,000行 32,000行 64,000行

T試算表:開始残高の作成
SelXJ_MkFWXJ 0.218 0.436 0.390 0.795
SumWXJ_MkFWSumDC 0.015 0.007 0.015 0.000
CpyYA_MkFZTB 0.000 0.007 0.000 0.015
PstWSumDC_ZTB 0.038 0.031 0.046 0.031
CalZTB 0.007 0.015 0.007 0.015
合計 Corei5(2.67G) Win7(64bit) 4M Ruby(64bit) 0.278 0.496 0.458 0.856
参考6 Corei5(2.5G) Win7(64bit) 4M Ruby(64bit) SSD 256GB 0.312 0.561 0.483 0.951
参考5 Corei5(2.67G) Win7(64bit) 3.5M Ruby(64bit) RamDisk 0.5M 0.481
参考4 Corei5(2.67G) Win7(64bit) 4M Ruby(32bit) 0.537 1.215 0.995 1.729
参考3 Core2Duo(2G) WinVista(32bit) 2G Ruby(32bit) 0.439 0.827 1.014 1.528
参考2 Pentium4(3G) WinXP(32bit) 512M ruby(32bit) 0.828 1.172
参考1 MobilePentium3(866M) WinXP(32bit) 512M Ruby(32bit) 1.432 2.023

U試算表:期間取引高及び繰越残高の計算
SelXJ_MkFWXJ 0.319 0.873 0.795 1.427
SumWXJ_MkFWSumDC 0.249 0.483 0.421 0.834
PstWSumDC_ZTB 0.202 0.062 0.062 0.062
CalZTB 0.015 0.015 0.015 0.007
BalZTB 0.015 0.007 0.007 0.015
合計 Corei5(2.67G) Win7(64bit) 4M Ruby(64bit) 0.800 1.440 1.300 2.345
参考6 Corei5(2.5G) Win7(64bit) 4M Ruby(64bit) SSD 256GB 0.639 1.185 1.092 2.090
参考5 Corei5(2.67G) Win7(64bit) 3.5M Ruby(64bit) RamDisk 0.5M 1.137
参考4 Corei5(2.67G) Win7(64bit) 4M Ruby(32bit) 1.222 2.463 2.106 4.007
参考3 Core2Duo(2G) WinVista(32bit) 2G Ruby(32bit) 1.326 1.934 1.467 3.666
参考2 Pentium4(3G) WinXP(32bit) 512M ruby(32bit) 1.641 2.625
参考1 MobilePentium3(866M) WinXP(32bit) 512M Ruby(32bit) 3.085 5.137

V元帳:記載行数が少ない元帳の作成 (元帳行数は右各欄参照) 75 150 75 150
BgFMkFZGL 0.000 0.007 0.078 0.015
SelXJ_MkFWXJ 0.452 0.670 0.772 1.372
SelWXJ_MkFWGL 0.257 0.452 0.405 0.795
ReFWGL_WGLF 0.007 0.007 0.007 0.007
ApdWGLF_MkFZGL 0.015 0.007 0.015 0.007
合計 Corei5(2.67G) Win7(64bit) 4M Ruby(64bit) 0.731 1.143 1.277 2.196
参考4 Corei5(2.67G) Win7(64bit) 4M Ruby(32bit) 1.160 2.314 2.018 3.890
参考3 Core2Duo(2G) WinVista(32bit) 2G Ruby(32bit) 1.249 1.873 1.576 2.715
参考2 Pentium4(3G) WinXP(32bit) 512M ruby(32bit) 1.641 1.511
参考1 MobilePentium3(866M) WinXP(32bit) 512M Ruby(32bit) 2.975 5.157

W元帳:記載行数が多い元帳の作成 (元帳行数は右各欄参照) 8,000 16,000 8,000 16,000
BgFMkFZGL 0.000 0.000 0.007 0.007
SelXJ_MkFWXJ 0.413 0.787 0.740 1.341
SelWXJ_MkFWGL 0.296 0.623 0.468 0.865
ReFWGL_WGLF 0.210 0.366 0.187 0.319
ApdWGLF_MkFZGL 0.179 0.296 0.163 0.296
合計 Corei5(2.67G) Win7(64bit) 4M Ruby(64bit) 1.098 2.072 1.565 2.828
参考6 Corei5(2.5G) Win7(64bit) 4M Ruby(64bit) SSD 256GB 0.904 1.794 1.310 2.652
参考5 Corei5(2.67G) Win7(64bit) 3.5M Ruby(64bit) RamDisk 0.5M 1.794
参考4 Corei5(2.67G) Win7(64bit) 4M Ruby(32bit) 1.800 3.508 2.689 5.131
参考3 Core2Duo(2G) WinVista(32bit) 2G Ruby(32bit) 1.840 3.073 2.012 3.681
参考2 Pentium4(3G) WinXP(32bit) 512M ruby(32bit) 2.016 3.751
参考1 MobilePentium3(866M) WinXP(32bit) 512M Ruby(32bit) 5.578 10.826

Memo;
Windows7(64bit)とRuby(64bit)を組合せて処理時間を計測してみました、また、その下に「参考」として過去のデータも記載しました
Windows7(64bit)とRuby(32bit)の組合せでは処理効率が大幅にダウンすることがわかります、一般に、WOW(Windows on Windows 64)では処理が20%〜40%程度遅くなるといわれていますが、それを裏付けたデータとなっています
64bitOSを利用するときは、x64版のRubyを使うことをお勧めします



2007/05/08 作成

CPU Core2Duo 2GHz
Memory 2GB
OS Windows Vista
CPU Core2Duo 2GHz
Memory 2GB
OS Windows Vista
仕訳型
2科目仕訳
1科目仕訳
仕訳行数
16,000
32,000
仕訳フィールド数
13
11
科目数
155
155
仕訳型
2科目仕訳
1科目仕訳
仕訳行数
32,000
64,000
仕訳フィールド数
13
11
科目数
155
155
試算表の作成
T開始残高の作成
SelXJ_MkFWXJ 0.328 0.826
SumWXJ_MkFWSumDC 0.015 0.047
CpyYA_MkFZTB 0.016 0.063
PstWSumDC_ZTB 0.063 0.062
CalZTB 0.015 0.016
合計 0.439 1.014
U期間取引高及び繰越残高の計算
SelXJ_MkFWXJ 0.764 1.232
SumWXJ_MkFWSumDC 0.390 0.640
PstWSumDC_ZTB 0.141 0.124
CalZTB 0.015 0.032
BalZTB 0.016 0.015
合計 1.326 1.467
試算表の作成
T開始残高の作成
SelXJ_MkFWXJ 0.718 1.419
SumWXJ_MkFWSumDC 0.015 0.016
CpyYA_MkFZTB 0.016 0.015
PstWSumDC_ZTB 0.062 0.063
CalZTB 0.016 0.015
合計 0.827 1.528
U期間取引高及び繰越残高の計算
SelXJ_MkFWXJ 1.029 2.246
SumWXJ_MkFWSumDC 0.734 1.264
PstWSumDC_ZTB 0.124 0.124
CalZTB 0.016 0.016
BalZTB 0.031 0.016
合計 1.934 3.666
元帳の作成
T元帳行数 75
BgFMkFZGL 0.016 0.016
SelXJ_MkFWXJ 0.811 0.951
SelWXJ_MkFWGL 0.390 0.577
ReFWGL_WGLF 0.016 0.016
ApdWGLF_MkFZGL 0.016 0.016
合計 1.249 1.576
元帳の作成
T元帳行数 150
BgFMkFZGL 0.016 0.016
SelXJ_MkFWXJ 1.123 1.544
SelWXJ_MkFWGL 0.702 1.124
ReFWGL_WGLF 0.016 0.015
ApdWGLF_MkFZGL 0.016 0.016
合計 1.873 2.715
U元帳行数 8,000
BgFMkFZGL 0.016 0.016
SelXJ_MkFWXJ 0.858 0.889
SelWXJ_MkFWGL 0.468 0.624
ReFWGL_WGLF 0.296 0.281
ApdWGLF_MkFZGL 0.202 0.202
合計 1.840 2.012
U元帳行数 16,000
BgFMkFZGL 0.016 0.015
SelXJ_MkFWXJ 1.263 1.498
SelWXJ_MkFWGL 0.811 1.217
ReFWGL_WGLF 0.577 0.561
ApdWGLF_MkFZGL 0.406 0.390
合計 3.073 3.681



2005/09/17 作成

仕訳行数 16,000 二科目仕訳
仕訳フィールド数 13 科目数155
仕訳行数 32,000 二科目仕訳
仕訳フィールド数 13 科目数155
CPU Pentium4
3.0GHZ
Pentium4
1.7GHZ
Mobile
Pentium3
866MHz
Memory 512MB 512MB 512MB
OS WindowsXP WindowsXP WindowsXP
CPU Pentium4
3.0GHZ
Pentium4
1.7GHZ
Mobile
Pentium3
866MHz

Memory 512MB 512MB 512MB
OS WindowsXP WindowsXP WindowsXP
試算表の作成
T開始残高の作成
SelXJ_MkFWXJ 0.469 0.844 1.011
SumWXJ_MkFWSumDC 0.062 0.063 0.081
CpyYA_MkFZTB 0.063 0.062 0.060
PstWSumDC_ZTB 0.172 0.235 0.200
CalZTB 0.062 0.078 0.080
合計 0.828 1.282 1.432
U期間取引高及び繰越残高の計算
SelXJ_MkFWXJ 0.766 1.188 1.513
SumWXJ_MkFWSumDC 0.515 0.797 1.081
PstWSumDC_ZTB 0.250 0.344 0.351
CalZTB 0.047 0.078 0.070
BalZTB 0.063 0.078 0.070
合計 1.641 2.485 3.085
試算表の作成
T開始残高の作成
SelXJ_MkFWXJ 0.860 1.281 1.813
SumWXJ_MkFWSumDC 0.062 0.031 0.010
CpyYA_MkFZTB 0.047 0.031 0.020
PstWSumDC_ZTB 0.156 0.094 0.120
CalZTB 0.047 0.031 0.180
合計 1.172 1.468 2.023
U期間取引高及び繰越残高の計算
SelXJ_MkFWXJ 1.281 2.031 2.764
SumWXJ_MkFWSumDC 0.969 1.500 2.052
PstWSumDC_ZTB 0.250 0.203 0.251
CalZTB 0.062 0.016 0.030
BalZTB 0.063 0.031 0.040
合計 2.625 3.781 5.137
元帳の作成
T元帳行数 75
BgFMkFZGL 0.031 0.110 0.131
SelXJ_MkFWXJ 0.672 1.172 1.592
SelWXJ_MkFWGL 0.469 0.797 1.111
ReFWGL_WGLF 0.047 0.063 0.071
ApdWGLF_MkFZGL 0.063 0.093 0.070
合計 1.641 2.235 2.975
元帳の作成
T元帳行数 150
BgFMkFZGL 0.046 0.109 0.080
SelXJ_MkFWXJ 1.235 2.234 2.914
SelWXJ_MkFWGL 0.089 1.484 2.033
ReFWGL_WGLF 0.063 0.078 0.060
ApdWGLF_MkFZGL 0.078 0.125 0.070
合計 1.511 4.030 5.157
U元帳行数 8,000
BgFMkFZGL 0.031 0.125 0.160
SelXJ_MkFWXJ 0.703 1.156 1.492
SelWXJ_MkFWGL 0.547 1.688 2.213
ReFWGL_WGLF 0.375 0.781 1.042
ApdWGLF_MkFZGL 0.360 0.547 0.671
合計 2.016 4.297 5.578
T元帳行数 16,000
BgFMkFZGL 0.031 0.547 0.190
SelXJ_MkFWXJ 1.252 2.188 2.965
SelWXJ_MkFWGL 1.094 3.172 4.266
ReFWGL_WGLF 0.719 1.468 2.073
ApdWGLF_MkFZGL 0.625 1.016 1.332
合計 3.751 8.391 10.826


Last Update 2012/05/31