プチコン3号の変数代入スピードに関する実験

2015/04/11 SatoshiMcCloud

1.イントロダクション

プチコン3号のSmileBasicという言語では整数型より実数型の計算のほうが速いとか通常起こりえないことが起こっているらしい。
本実験では、型の違いなどによる計算速度の違いを明らかにするため、まずはもっともプリミティブな変数代入の速度を比較してみたい。

2.実験方法


図1.実験用プログラム

図のプログラムは、7行目の命令を1000000回実行し、その際にかかったフレーム数を表示する処理を10回行うものである。
これの7行目を、左辺を「A=」「A%=」「A#=」に、右辺を「0」「0.00」「1」「65535」「65535.75」「A」「A%」「A#」に変えながら実行し、それぞれにかかったフレーム数を比較する。その際、参考のために7行目をコメントアウトした状態でも実行し、記録する。
同様に、2行目のコメントアウトを解除し「OPTION DEFINT」を有効にした状態でもプログラムを実行し比較する。

3.実験結果

※旧式のNintendo3DSでプチコン3号ver3.1.0にて実験
OPTION DEFINT なし なし なし なし なし なし なし なし なし なし なし なし なし なし なし なし なし なし なし なし なし なし なし なし なし
左辺 なし A= A= A= A= A= A= A= A= A%= A%= A%= A%= A%= A%= A%= A%= A#= A#= A#= A#= A#= A#= A#= A#=
右辺 なし 0 0.0 1 65535 65535.75 A A% A# 0 0.0 1 65535 65535.75 A A% A# 0 0.0 1 65535 65535.75 A A% A#
1回目 178 241 238 239 239 239 248 249 246 245 256 244 242 257 270 253 272 237 241 240 242 240 246 248 244
2回目 179 241 239 238 240 239 246 248 247 243 257 245 244 259 272 252 273 240 240 239 237 242 245 249 249
3回目 180 242 239 239 237 238 243 248 247 246 255 245 245 259 275 252 272 239 240 242 237 241 247 249 247
4回目 180 239 242 241 241 239 247 250 246 246 254 244 245 256 273 252 272 243 240 249 240 240 246 250 245
5回目 180 237 241 240 237 237 249 248 246 244 256 246 245 256 273 252 273 241 241 238 238 240 248 250 247
6回目 180 239 240 239 239 240 249 249 244 246 256 244 242 257 271 253 270 240 240 237 238 243 247 251 248
7回目 179 239 242 240 237 240 246 247 245 242 258 243 246 259 269 250 272 240 241 242 240 239 251 249 244
8回目 179 237 238 239 238 238 249 246 245 244 257 246 245 258 271 253 272 239 241 239 240 240 246 248 247
9回目 178 242 240 243 238 239 247 248 247 242 259 241 243 260 274 253 270 240 241 241 238 239 247 249 246
10回目 179 242 239 241 241 239 247 246 245 242 259 246 245 258 269 253 274 236 240 239 238 241 246 250 246
平均値 179.2 239.9 239.8 239.9 238.7 238.8 247.1 247.9 245.8 244 256.7 244.4 244.2 257.9 271.7 252.3 272 239.5 240.5 240.6 238.8 240.5 246.9 249.3 246.3
なし×3との差 0 60.7 60.6 60.7 59.5 59.6 67.9 68.7 66.6 64.8 77.5 65.2 65 78.7 92.5 73.1 92.8 60.3 61.3 61.4 59.6 61.3 67.7 70.1 67.1


























OPTION DEFINT あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり あり
左辺 なし A= A= A= A= A= A= A= A= A%= A%= A%= A%= A%= A%= A%= A%= A#= A#= A#= A#= A#= A#= A#= A#=
右辺 なし 0 0.0 1 65535 65535.75 A A% A# 0 0.0 1 65535 65535.75 A A% A# 0 0.0 1 65535 65535.75 A A% A#
1回目 176 226 246 224 227 243 241 241 263 225 249 224 228 246 239 239 263 225 235 227 230 233 246 245 243
2回目 175 225 246 226 227 243 242 241 261 227 245 225 227 244 240 239 260 227 236 227 226 235 247 247 244
3回目 173 223 247 225 225 244 241 240 259 226 245 228 225 244 244 243 263 227 236 227 226 232 247 248 244
4回目 173 225 247 225 226 244 244 242 263 225 244 225 225 243 242 244 262 226 237 225 227 236 247 246 244
5回目 174 225 249 223 225 245 239 240 260 226 245 225 222 240 244 241 262 226 235 224 227 232 246 244 243
6回目 177 225 247 226 221 243 241 243 261 229 244 227 224 243 242 241 263 223 236 225 227 232 246 246 243
7回目 173 225 245 225 224 244 241 242 259 227 248 226 224 245 242 243 263 229 236 224 226 233 245 246 243
8回目 174 226 246 227 223 244 238 242 260 226 248 225 225 241 238 243 263 226 236 228 226 234 244 245 244
9回目 175 225 247 226 226 244 240 242 257 228 245 225 224 242 241 240 263 227 237 228 225 234 245 244 243
10回目 174 226 246 228 224 241 243 240 264 227 249 224 227 244 242 242 263 226 235 226 222 233 246 246 244
平均値 174.4 225.1 246.6 225.5 224.8 243.5 241 241.3 260.7 226.6 246.2 225.4 225.1 243.2 241.4 241.5 262.5 226.2 235.9 226.1 226.2 233.4 245.9 245.7 243.5
なし×3との差 0 50.7 72.2 51.1 50.4 69.1 66.6 66.9 86.3 52.2 71.8 51 50.7 68.8 67 67.1 88.1 51.8 61.5 51.7 51.8 59 71.5 71.3 69.1

4.実験結果の整理と考察











デフォルト変数 左辺\右辺 0 0.0 1 65535 65535.75 A A% A#
OPTION DEFINTなし A= 60.7 60.6 60.7 59.5 59.6 67.9 68.7 66.6
A%= 64.8 77.5 65.2 65.0 78.7 92.5 73.1 92.8
A#= 60.3 61.3 61.4 59.6 61.3 67.7 70.1 67.1
OPTION DEFINTあり A= 50.7 72.2 51.1 50.4 69.1 66.6 66.9 86.3
A%= 52.2 71.8 51.0 50.7 68.8 67.0 67.1 88.1
A#= 51.8 61.5 51.7 51.8 59.0 71.5 71.3 69.1

以下、「OPTION DEFINTなし」は「実数デフォルト」、「OPTION DEFINTあり」は「整数デフォルト」と表記
書きかけ中・・・ inserted by FC2 system