メモリの無駄遣い

サーバ機の標準スペックをメモリ8GBにするって言ってたから、あまり気にせずにプログラミングしてみたんです。64BitLinux/メモリ2GBで動かしたらメモリを使い切りました・・・。

100万人 * 50属性
= (100万) * (50 * (30 + 30 + 40))
=1MB * 50 * 100
=1MB * 5000
=5GB

むお・・・。判定処理を書くのが面倒だったからダミーノードを入れたのが、こんなところでネックになるとは・・・。それと64BitOSで動作させるとポインタが8Byte取られるらしく、それも影響しているくさい。きちんとtypedefして使うか(´・ω・)
Cは面倒な言語ですね。
構造体(Struct)に関数ポインタを持たせてDeepCopyとDestructorがし易いようにしてるんですが、これは要らないのかな・・・。入れるデータが決まってるならわざわざ汎用データコンテナにしてメモリを使いすぎるのも問題と・・・。1属性あたり2個のポインタが増えちゃってるから16Byte(64Bit*2) * 50 * 100万人=100MB。うわぁ・・・・w
こんなんじゃコンシューマ機のプログラムやってる人に怒られそうだw

一応それなりには出来たけど、 メモリ使用量は全然減らせるですね(´・ω・)
処理性能は書き込みが毎秒20万件(1件辺り1ユーザー追加, 50属性の書き込み), 検索は毎秒100万件でスレッドセーフ。とりあえずここがネックになる事はなさそうですね。

複数の言語を同時に使うと、頭が混乱するですよ。
[現実]εεε゙(ノ´・ω・)ノ  [妄想]

 

今週はGoogle先生のセッションに参加してきます(`・ω・)

新しいサイトもよろしくお願いします!