Entries

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
この記事にトラックバックする(FC2ブログユーザー)
http://ysrken.blog.fc2.com/tb.php/22-c744e310

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

HSPはまあ確かに遅いけどさあ……

 ネットでC++ 闇の言語について調べていたら、「HSPが遅いんだなって話」という記事になぜか行きあたった。まあ実際HSPは遅い(ちょっと計算のプログラムでも書けば明らか)んだけど、記事の内容を読んでもやもやしたのでコメントしようとして、でもなぜかコメントできなかったのでこちらに書いてみる。

 いや、そもそも「圧縮しづらいデータ」って目的で文字列とかおかしいよね? 文字列なんて冗長に決まってんじゃん。英文での話だけど、PPM圧縮を極めると1文字1bitで表せたりする世界だよ? 実際テキストデータなんて縮む縮む。深海中に放置したカップ麺容器なんて目じゃないぐらい縮む。手を抜くにしても、rnd関数で生成した乱数データをpoke命令で書き込むぐらいするべきじゃないか?
 それに、「HSPで文字列を"+="で継ぎ足していくと遅い」というのは割りと有名な話なわけで。そうでなくてもmemcpy命令でコピーする方が速いってのは試してみれば分かること。……ま、いちいちそれするのが面倒だから"+="で書いちゃうわけだけどさ。
 何より酷いのは、1ループごとにいちいちtitle命令で確認しているところ。画面処理は演算より時間食うに決まってんじゃん!
 以上を踏まえて、まじめに書き直したものがこちら。

sdim buf,10*1024*1024
str1="ロロナ先生かわいい" ;18byte
str2="トトリさんかわいい" ;18byte
str3="メルルちゃんかわいい" ;20byte
str4="百合百合" ;8byte
p=0 :time=gettime(6)
repeat 10*1024*1024/64
if time!gettime(6) {
title str(cnt)
await 0
time=gettime(6)
}
memcpy buf,str1,18,p :p+=18
memcpy buf,str2,18,p :p+=18
memcpy buf,str3,20,p :p+=20
memcpy buf,str4,8,p :p+=8
loop
bsave "Testdata.bin",buf
end

※ループ中のif文は、1秒ごとに結果を更新するためのもの

 実行してみると1秒ほどで終了し、件のデータが出力される。で、title命令を毎回実行するようにすると格段に遅くなることから、ボトルネックはtitle命令>+=演算子>その他であることが窺える。

 ……いや? C++のことはdisっていませんよ? <string>とか超便利じゃないですかあれ。
関連記事
スポンサーサイト
この記事にトラックバックする(FC2ブログユーザー)
http://ysrken.blog.fc2.com/tb.php/22-c744e310

トラックバック

コメント

コメントの投稿

コメントの投稿
管理者にだけ表示を許可する

Appendix

プロフィール

YSR

Author:YSR
「YSR」「YSRKEN」「◆YSRKENkO6Y(~2013/08/25)」「◆YSRKEN.ceVZZ(2013/08/26~)」として活動しています。
プログラミングと艦これが趣味です。
プロフ画像はCrystalDiskInfoの水晶雫ちゃんです。
主な創作物についてはhttp://ysrken.blog.fc2.com/blog-entry-76.htmlをご覧ください。

カレンダー(月別)

06 ≪│2017/07│≫ 08
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 - - - - -

全記事表示リンク

全ての記事を表示する

QRコード

QR

総アクセス数

アクセス数

現在の閲覧者数:
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。