トピック

高速化の疑問

軽量化ツールPRGFLOORER3を大方作り終え、動作テストをして気付きました。 処理速度が前バージョンの方が速い!? そもそも前バージョンのソースがしっちゃかめっちゃかなので作り直したのですが、何故か前の方が速いのです。 それは何故か知りたいです。 あと高速化の余地があったらヒントを教えて下さい。 (画像のキーは前バージョン含んでいます) (前に教えて下さった通り、TXTで読み込む形式をどちらのバージョンも使っています)
3そうだね
プレイ済み
返信[1]
親投稿
誤解を招くおそれがあるため言っておきます。 画像の下の端っこにPRGFLOORER2がありますが、それは関係ありません。 全バージョンを含んでるという意味は、PRGFLOORER3に2のプログラムを乗っけているという意味です。なので3をダウンロードしていただければokです。
2そうだね
プレイ済み
返信[2]
親投稿
ひろきち henahenachoco
高速化については僕も知りたいのでコメントしておきますね。 僕が心掛けているのは、とにかく3DSが計算する回数を減らすこと、ですかね。 FOR文の中で行う必要のない代入はFOR文の外に出して繰り返さないようにする、とか、 IF~||~THENを使うときはTRUEになることが多い方を左に書く、とか。  地味めな知識しかないので…
2そうだね
プレイ済み
返信[3]
親投稿
みなつ tksm372
すごくいい問題ですね! 私も試してみましたが、元のプログラムの291行目で 「1%処理する毎に、変数P$に作業中の変数B$を連結して、B$を一旦空にする」 という処理が入っているため、元のプログラムのほうが早いようでした! すばらしい処理だと思います。 改良版にもこの処理を入れれば、早くなると思います。 一般に2つの文字列を連結する場合、新しい場所に2つの文字列を順にコピーする(片方の文字列の後にもう片方をコピーするわけではない)ので、処理時間は連結する両方の文字列を足した長さに比例します。 例えば0文字+1文字を連結する時間を1(10文字+10文字なら20)として、10,000文字のファイルを処理する場合、元のプログラムと改良版で、文字列の連結だけでどのくらい処理時間がかかるのか、計算してみると面白いと思います! (私の計算では、およそ50倍違うようでした)
3そうだね
プレイ済み
返信[4]
親投稿
みなつ tksm372
あ・・・ TXT2$=TXT2$+M$ のかわりに INC TXT2$,M$ とすれば、TXT2$はコピーされずに、その後ろにM$が連結されるので、高速に連結できるようでした(*ノノ)
3そうだね
プレイ済み
返信[5]
親投稿
ありがとうございます。 INCは参照がどーたらであまり使っていませんでした。 なるほど文字列変数はINCの方が速いのですね。 あと1%毎に空にする処理は見落としていました。 本当にありがとうございます。
1そうだね
プレイ済み
返信[6]
親投稿
これにて閉じます。 皆さん本当にありがとうございました!
0そうだね
プレイ済み