HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2018
0920
Nanashinogon使用メモリを最小限に抑えてプログラムを動かす書き方2解決


Nanashinogon

リンク

2018/9/20(Thu) 22:53:44|NO.85392

こんにちは、Nanashinogon です。
最近XPでHSPを触っていて思ったことがあって、それは
「使用メモリ最小限に抑える書き方ってあんのかな・・・」
という疑問です。

僕の使っているパソコンでは、CPUがなんと1.7GHz!HDD100GB以上!
文句なし!最高!
...といいたいのですが、メモリが残念ながら500MBくらいです。

プログラムの中で何度も同じ命令をだして無駄を作っているからか、
hsp3.exeの使用率はあっという間に7000kも使っていました。
(驚きすぎかもしれない)

んで、一度思いついた解決策があってですね。
「#defineを使えばいけるんじゃね?」というやつで。
でも#defineって確か、置き換えて書きやすくするだけでしたよね…
意味無いのかな...そこら辺厨房でも分かるよう教えてください!



この記事に返信する


MillkeyStars

リンク

2018/9/21(Fri) 03:57:56|NO.85394

>>プログラムの中で何度も同じ命令をだして無駄を作っているからか、
>>hsp3.exeの使用率はあっという間に7000kも使っていました。
>>(驚きすぎかもしれない)
同じ命令は同じコードを再利用しますので、基本的にはコンパイル時にサイズ確定されます。
picload 命令などを何度も利用しても、picload は 1つになります。
(呼び出し用の命令分のコードサイズは増えますが、実体は常に 1つです。)

>>んで、一度思いついた解決策があってですね。
>>「#defineを使えばいけるんじゃね?」というやつで。
>>でも#defineって確か、置き換えて書きやすくするだけでしたよね…
>>意味無いのかな...そこら辺厨房でも分かるよう教えてください!
確定されている物と不確定な物と考えればいいと思うよ。

#define はコンパイル時に計算を行い計算結果として置き換える。(主が思っている事と同じ)
#define は既に結果が確定されているので、計算結果が記録されているアドレスとその中身のバイト数で済む。
(アドレス 4 バイト + 内容の 4 バイトの計 8 バイト)

普通の変数は、後で内容を変更できるように構造体が作られるのでその分が加算される。
(PVal 構造体のアドレス 4 バイト + 構造体実体のサイズ 32 バイト + その中身(可変)の最低 36バイト)

どちらがメモリを利用しないか一目瞭然だと思いますが、変数を大量に作らない限り影響はありません。
(無理にサイズを減らそうとすると、後々厄介になるのでお勧めしません。)

変数実体のサイズより、その先の内容用の確保サイズに修正を加えた方が楽だと思いますよ。
(例 : dim a,64(256バイト) を確保してるが実際には、その半分だけしか使っていないとかで、無駄に 128 バイトを確保してしまっているとか)



Nanashinogon

リンク

2018/9/21(Fri) 16:07:54|NO.85395

なるほど...
ありがとうございます!



ONION software Copyright 1997-2018(c) All rights reserved.