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