PHPがいかに駄目言語であるかをちゃんと説明
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2013/11/15(金) 20:57:08.46他の言語と比較しながら、具体的にちゃんと説明してください!
0604デフォルトの名無しさん
2014/03/13(木) 01:35:34.90ID:AIWZ4REO「これを読めばあなたも上級者!」なら同じ感想だけどさ
言及弱くて、よくて「そもそもSPLとかさー」、とかの談義が始まりゃマシ程度のレスだな
ミスリード狙いっぽく読めるのがなんかどうもな
0605デフォルトの名無しさん
2014/03/13(木) 09:11:21.29ID:LTbtGzLp結局ひねくれて見えるんだよな、この手の記事
0606デフォルトの名無しさん
2014/03/13(木) 10:24:05.81ID:1g7vjGnBそこのコラムのもう一人の執筆者の肩書きが
PHP技術者認定機構 理事長
Rails技術者認定試験運営委員会 委員長
同じ穴か
0607デフォルトの名無しさん
2014/03/13(木) 18:45:09.88ID:qaG+7LaQPythonやRubyを仕事で使うのを諦めた層は、そんな糞コラム読まないだろ
田舎零細企業でAccessやExcelを弄ってる40歳以上を想定してるはず
0608デフォルトの名無しさん
2014/03/25(火) 09:02:21.24ID:UiDCLV+E0609デフォルトの名無しさん
2014/03/31(月) 17:25:09.15ID:WQVzru6Sあれテストがない?と思ったらStaticまみれワロタ
0610デフォルトの名無しさん
2014/04/09(水) 12:21:49.63ID:5hcMVv4L視認しやすさは絶対外に書いたほうだと思うんだけどいろんなプログラムのソース見てると
$header = <<< HTML 〜みたいなことして最期にechoしてるのが結構あったので気になった
実際どっちがいいの?
0611デフォルトの名無しさん
2014/04/09(水) 18:03:12.55ID:sLXa1YUE0612デフォルトの名無しさん
2014/04/12(土) 16:17:32.58ID:RuY08Pck目的のスレがかえってPHPが優れている言語である
ことを証明してしまった。
糸冬
0613デフォルトの名無しさん
2014/04/15(火) 09:10:13.92ID:LUmefa1Wperl 死んでる
ruby, py ハハッ それどうすんのさ
php 最強
0614デフォルトの名無しさん
2014/04/20(日) 22:28:50.63ID:6zjHScacpearライブラリーのコードアシストを出すには何か設定が必要なんですか?
それともドキュメント見ながらメソッド打たなきゃいけないんですか?
OSはwin8です。
0615デフォルトの名無しさん
2014/05/31(土) 09:21:39.25ID:1YpY4EUA0616デフォルトの名無しさん
2014/05/31(土) 11:59:32.10ID:YgxuCMdP0617デフォルトの名無しさん
2014/06/06(金) 02:56:12.95ID:UgiouvQd0618デフォルトの名無しさん
2014/06/22(日) 23:28:23.75ID:I40vD2Orすごく重いのですが、仕様ですか?
0619デフォルトの名無しさん
2014/06/22(日) 23:40:50.98ID:dgCxS7ofだしてください。
話はそれからです。
0620デフォルトの名無しさん
2014/06/23(月) 01:47:44.99ID:x59p+xZhPHPがJAVAより遅いのは仕様です
PHPで単にオブジェクト思考にしたら遅くなったのだとしたら、あなたの能力の問題です
0621デフォルトの名無しさん
2014/06/23(月) 11:36:05.41ID:2cPnnJRdPHPが遅いというより、Javaが速いんだと思う。
ベンチマークによるけど概ねこんな感じ
Javaなどのコンパイラ系は速くて、スクリプト言語は軒並み遅い
http://d.hatena.ne.jp/kwatch/20100430/1272585083
> これを見れば、最速な言語は C/C++ であり、Java や Haskell や OCaml といった
> 静的な言語は軒並み上位に登場する。これに対し、Ruby や Python や
> PHP といったスクリプトは全部下のほう (つまり遅い)。
http://maplesystems.co.jp/blog/all/programming/2015/
> Java > C >>>> PHP > Python >> Ruby
http://akiniwa.hatenablog.jp/entry/2013/09/28/142947
> 結果をまとめると
>
> 言語 実行時間
> c 0.2741[s]
> java 1.7661[s]
> perl 11.9690[s]
> ruby 7.8373[s]
> python 12.2507[s]
http://www.akazah.com/lang-run/
> Cは当然一番早いがJavaはほとんど変わらない。
> Scalaは少し遅いけれど、その次のLuaとは一桁違う。
> ここまでコンパイル系。
> スクリプト系ではLuaが一番。
> その次のJRubyとはほぼ互角。
> PHPも案外早くて、Rubyがその次。
> Perlはとても遅い・・・。
0622デフォルトの名無しさん
2014/06/25(水) 10:00:19.03ID:uLaDf7W/> http://maplesystems.co.jp/blog/all/programming/2015/
> > Java > C >>>> PHP > Python >> Ruby
の部分、Cの速度は、gcc に最適化オプションをつけずにコンパイルした
255 msの場合で、最適化オプション -o をつけると 58ms となり、
Java の181ms よりも 3.12 倍も高速になる、とのことだよ。
0623デフォルトの名無しさん
2014/06/25(水) 10:05:02.39ID:uLaDf7W/メモリ確保が入ってくるととたんに性能が落ちる。
経験的には、同じ容量を確保した場合、C/C++ の 100倍〜1000倍
程度メモリを食うらしい。
さらに、Garbage Collection が不定期に実行されるので
スクロール中にガタガタと止まったりする。
無駄に多くメモリを消費するのも、GC の頻度が高くなる最大の原因
になってもいる。
Javaアプリの起動が遅いのは、アプリの初期化時にメモリ確保を一気に行うときに時間がかかって
居ることが主な原因。
0624デフォルトの名無しさん
2014/06/25(水) 10:38:23.32ID:uLaDf7W/>経験的には、同じ容量を確保した場合、C/C++ の 100倍〜1000倍
>程度メモリを食うらしい。
ここは嘘だった。実際は、Javaの参照(ポインタ)は、C/C++よりも
ずっと容量を食うらしく、参照によってリンクを張った構造を
作ると C/C++ のポインタで同様の事を行った場合に比べて、
100〜1000倍のメモリ容量を食う。
0625デフォルトの名無しさん
2014/06/25(水) 16:53:28.76ID:uLaDf7W/よう。
・参照の変数の内部表現に必要なバイト数がC/C++のポインタに比べて
大きい。ただし、大きいといっても、これだけで100〜1000倍にも
なる理由の説明にはなりそうにはない。
・C/C++ では、オブジェクトを構造体やクラスの中に参照やポインタ
を解さずにそのまま埋め込むことが出来たが、Javaでは必ず参照
となるため、必ずヒープ(ストア)領域から new する必要があり、
これが、複数のメンバを持つ一般的な構造体では意外と大量の
メモリを食ってしまう可能性。 これについても、C/C++の経験
では、「大した増加にはならない」と予想されるが・・・。
0626デフォルトの名無しさん
2014/06/26(木) 07:46:08.82ID:H9MJZ09s・クラス・オブジェクトのサイズがとても大きい可能性。
例えば、intのメンバ変数1つだけを持つC/C++の構造体のサイズは4バイト
だが、Javaのクラスで同様のものを作ると、4バイト+100バイト程度に
なっているのかもしれない。追加された「100バイト」の原因として
考えられるのは、Java のあらゆるクラスのルート・クラスの「Object」
のサイズ + クラスの継承時に付く何らかのデータやパディング。
0627デフォルトの名無しさん
2014/06/26(木) 07:56:39.75ID:lRUtVmtM0628デフォルトの名無しさん
2014/06/28(土) 17:01:39.43ID:A3rASK73あとは文字列操作をメソッド化してほしい
0629デフォルトの名無しさん
2014/07/01(火) 21:05:42.50ID:GeIQQ2aO0630デフォルトの名無しさん
2014/07/02(水) 16:21:25.63ID:fvFaAf5b誰に言ってるの?
0631デフォルトの名無しさん
2014/07/02(水) 16:41:49.10ID:UOkv1KGW今では、JavaのGCは一度にやらず、
10msごとに小刻みに行う
また、使うメモリの量が増えると、
GCにかかる時間も増える
0632デフォルトの名無しさん
2014/07/05(土) 10:04:44.86ID:e1V2szvr経験的には、Javaは、C/C++ の 100〜1000倍のメモリを食う。
これは、Swingなどの動的ライブラリの大きさが大きいというだけではなく、
アプリ独自のデータに対しての話。C++なら300Kバイトもかかるかかからないか
のような場合でも、Javaでは、150MBくらい消費した。
つまり、500倍程度。
0633デフォルトの名無しさん
2014/07/05(土) 11:38:22.81ID:mAp+Ajil0634デフォルトの名無しさん
2014/07/05(土) 12:19:36.06ID:atmyUkOz他の言語を叩くやつって何か抜けてる奴が多い
0635デフォルトの名無しさん
2014/07/05(土) 16:54:43.41ID:e1V2szvr話の流れじゃん。
頭が固い人には創造的結果は出来ないよ。
0636デフォルトの名無しさん
2014/07/05(土) 16:58:20.65ID:e1V2szvr嘘だと思うなら実測してみなよ。
0637デフォルトの名無しさん
2014/07/05(土) 17:48:34.11ID:DUJJhZn/それは嘘だと思います。
実測データ出せますか?
0638デフォルトの名無しさん
2014/07/05(土) 18:19:52.16ID:e1V2szvrうーん。絶対間違い無い、と確信できるほどの厳密な調査はして無い。
しかし、
・見た目の上では自作アプリは設計通りの動作をしていること。
今議題にあがっているデータは見た目でデータ構造が一目瞭然
になるような物で、間違っていれば分かると思えること。
・メモリ使用量を見ると(たしか)150MB 程度で、それが原因で GC
が高頻度で起きており、JVMのメモリ量を変更することで大幅な
GC頻度の減少が見られた事。
・もし、同じことを C/C++ でやれば、ほぼ 200KB 程度であると予測
出来るし、使用容量の見積もりはそれほど難しくないように思えた
事。もし多めに見積もっても、1MB は超えないであろうと思える。
0639デフォルトの名無しさん
2014/07/05(土) 18:30:06.21ID:lG7Vks4tタスクマネージャならなんの値をメモリって言ってる?
ランタイムが大きい分メモリを消費するのは当たり前なんだが
0640デフォルトの名無しさん
2014/07/05(土) 18:40:42.15ID:e1V2szvrそのとき色々確認したが、大量のメモリを使っていることは確実に
思えた。
0641デフォルトの名無しさん
2014/07/05(土) 18:45:33.74ID:e1V2szvrなぜなら、オブジェクトの作成を、画面で見えている部分だけに
限定するように修正してみたら大幅に使用量が改善したから。
もしC++だったら、そのような工夫をしなくても余裕だったのが、
プログラムの手間や複雑さが増大してしまったが。
0642デフォルトの名無しさん
2014/07/05(土) 18:49:46.37ID:pJl1PMF00643デフォルトの名無しさん
2014/07/05(土) 19:00:25.28ID:e1V2szvr嘘をついているつもりは無い。
もしかして、試したこと無いで言ってる?
Javaで実際的なアプリを作った経験が有る人は少数派だろうけど、
自分はその「少数派」に当たるかも。
そもそもやってみたことが無い人が多い中で、自分はやってみた
結果で話しているよ。
0644デフォルトの名無しさん
2014/07/05(土) 19:12:35.24ID:5Xg0uObF0645デフォルトの名無しさん
2014/07/05(土) 19:30:12.00ID:DUJJhZn/一つのオブジェクトあたりの
メモリ使用量は変わらないんだよな。
0646デフォルトの名無しさん
2014/07/05(土) 19:34:53.19ID:3zLRhjeWを読んでみた?
0647デフォルトの名無しさん
2014/07/05(土) 19:37:24.83ID:1SwtShn+0648デフォルトの名無しさん
2014/07/05(土) 19:51:45.11ID:3zLRhjeWなぜ、そんな了見が狭いの?
0649デフォルトの名無しさん
2014/07/05(土) 20:30:06.08ID:pJl1PMF0試したことなく適当こいてるのはお前だろ
0650デフォルトの名無しさん
2014/07/05(土) 20:31:59.12ID:3zLRhjeWいや、実際的なアプリ製作での実体験に基づいているよ。
0651デフォルトの名無しさん
2014/07/05(土) 20:33:00.76ID:3zLRhjeWこんなんで訴訟なんて起こされても困るし。
0652デフォルトの名無しさん
2014/07/05(土) 20:39:10.12ID:pJl1PMF0平気で嘘を吐いても良心が痛まない人って居るよね
0653デフォルトの名無しさん
2014/07/05(土) 20:42:31.51ID:zqYTQuxN0654デフォルトの名無しさん
2014/07/05(土) 21:57:34.45ID:lG7Vks4t単に作りが悪くてメモリリークしてるとか、GCの効率を妨害してるとか、そういうことを検証しないで経験とかで言われてもね
> 考えられるのは、Java のあらゆるクラスのルート・クラスの「Object」
> のサイズ + クラスの継承時に付く何らかのデータやパディング。
Objectのサイズってなに?仮装関数テーブルとか?それがインスタンスごと複製されちゃうのか?
0655デフォルトの名無しさん
2014/07/05(土) 22:38:24.14ID:rZ0JUFAI> Javaで実際的なアプリを作った経験が有る人は少数派だろうけど、
> 自分はその「少数派」に当たるかも。
とか言ってる時点でお察し。
Javaで実用アプリ書くなんて珍しくもなんともないだろ。こいつの視野が狭いことが予想されるし、どうして150MBも食うのかもろくに分析してないんだろうな。
てかC++で書いて計測したわけじゃなくてC++の方は予測なんだろ?
もしかして、試したこと無いで言ってる?w
0656デフォルトの名無しさん
2014/07/06(日) 00:30:25.23ID:QUzsj6VpJavaのオブジェクトは.classやらhashCodeやらのヘッダ情報で必ず8バイト食うので、
メモリ使用量で不利になるとの情報あり。これだからプリミティブ型とかでみみっちい事しなきゃならない。
しかし結局オートボクシングのおかげで無駄にオブジェクトが生成されるわけだが
Javaオブジェクトのメモリ構造
http://www.codeinstructions.com/2008/12/java-objects-memory-structure.html
0657デフォルトの名無しさん
2014/07/06(日) 04:16:12.79ID:XAawtdmz0658デフォルトの名無しさん
2014/07/06(日) 07:41:01.36ID:dl4OC7T3>Objectのサイズってなに?仮装関数テーブルとか?それがインスタンスごと複製されちゃうのか?
Java は、どんなクラスも、基本基底クラスなるものがあって、それが
「Object」クラス。例えば、自前で
class CMyData {
int x;
}
というクラスを作ったとしても、CMyData は、Object クラスを継承して
しまう。なので、少なくとも、
sizeof(CMyData) >= sizeof(Object) + sizeof(int)
となる。
0659デフォルトの名無しさん
2014/07/06(日) 07:48:52.93ID:dl4OC7T3まあ、一般プログラマの「予想」と、オイラの「予想」の予測精度の高さ
は違うんだけど、それは匿名掲示板では伝えることが出来ないから、
なんとでも言えてしまうよ。
0660デフォルトの名無しさん
2014/07/06(日) 07:57:56.20ID:dl4OC7T3intメンバだけを持つクラスでも、暗黙のHEADERの8バイトの他に、
Objectがnewされて、その参照が追加される。
しかも、boolean (1bit)には、8バイトアラインが付き、8バイトも消費
される。byteも4byteアラインが付く。
これだけでも、C++より遥かにメモリ容量を食っている事が分かる。
実際はもっと凄いことになっているよ。
0661デフォルトの名無しさん
2014/07/06(日) 08:20:21.04ID:dl4OC7T3>単に作りが悪くてメモリリークしてるとか、GCの効率を妨害してるとか、
>そういうことを検証しないで経験とかで言われてもね
オイラは、実際に、最高レベルのプログラマだと評価が有る。
めったなことでは間違わないよ。
0662デフォルトの名無しさん
2014/07/06(日) 09:46:48.12ID:HgdZEROTてかいい加減スレ違いだからやめろ。レベルな高いプログラマならこんなとこじゃ無くて、ブログにでも書けや
0663デフォルトの名無しさん
2014/07/06(日) 10:19:41.20ID:lHEQcTu3最高レベルのプログラマは間違えないのです
0664デフォルトの名無しさん
2014/07/06(日) 10:25:13.41ID:ZmPBc8030665デフォルトの名無しさん
2014/07/06(日) 14:55:58.47ID:dl4OC7T3認めよう。しかし、数十倍であることは、まず間違いない。
0666デフォルトの名無しさん
2014/07/06(日) 15:01:09.07ID:ikMLm2G0gcc で -O3 付けたら、そもそも sumup は一度も呼ばれない。
sumup は副作用のない関数で戻り値が代入される result もローカル変数だろ。
その result は main の後の処理で使われないだろ。
だから gcc の最適化器は main 関数の中にある for 自体を丸ごと全部消す。
printf して終わるだけのバイナリができる。
0667デフォルトの名無しさん
2014/07/06(日) 16:13:41.57ID:c4JqBC4F最高レベルなら予想とかじゃなくてOpenJVM解析して正しい結果出してくれる?
というか、ミスをしないとか言っちゃってる地点でたいしたやつじゃないか
0668デフォルトの名無しさん
2014/07/06(日) 16:18:11.30ID:dl4OC7T3そんな暇じゃない。
0669デフォルトの名無しさん
2014/07/06(日) 16:20:59.87ID:JKxWpx0K数十倍であることがまず間違いないのなら
100〜1000倍というのはまず間違っているということになるわけだが
0670デフォルトの名無しさん
2014/07/06(日) 16:22:15.18ID:ZmPBc8030671デフォルトの名無しさん
2014/07/06(日) 16:22:40.22ID:dl4OC7T3の書き間違いだった。すまん。
0672デフォルトの名無しさん
2014/07/06(日) 16:31:50.40ID:tlPqhdeM0673デフォルトの名無しさん
2014/07/06(日) 16:36:59.55ID:dl4OC7T3じゃあ、Javaでも「C++ で必用な容量とほぼ同じ」と信じていてください。
一向に構いません。そう信じて損するのもあなた、得するのもあなたです
から。
0674デフォルトの名無しさん
2014/07/06(日) 16:42:00.47ID:ZmPBc803JavaがC++に比べればかなりの容量を食うのは皆知ってるだろ
君が適当に出した100〜1000倍って数値とその後のレスの内容が怪しいと突っ込まれただけ
最初から数十倍ならここまで反応はなかったよ
0675デフォルトの名無しさん
2014/07/06(日) 16:44:46.61ID:dl4OC7T3>JavaがC++に比べればかなりの容量を食うのは皆知ってるだろ
それは発耳。
オイラがここで言わなかったら、ほとんど誰も知らなかったと思うが。
0676デフォルトの名無しさん
2014/07/06(日) 16:54:08.91ID:khAlvNFC5年くらい前のXNAの本で読んだ話だが、C#とC++を比較して、
CPU性能はC++の80%ほど、メモリは2倍消費するくらいを目処にするといいらしい
メモリは2倍消費するというより、仮想マシンはとりあえず2倍確保しておいて、
それをメモリプールとしてスタンバイさせておくのだろうね
0677デフォルトの名無しさん
2014/07/06(日) 16:58:29.43ID:ikMLm2G0public static void main(String[] args) {
SimpleObj[] objs = new SimpleObj[100];
for (int i = 0; i < 100; i++) {
objs[i] = new SimpleObj();
}
try { Thread.sleep(180 * 1000); } catch (Exception e) {}
}
}
class SimpleObj {
public int i;
}
$ javac heaptest.java
$ java heaptest &
$ jmap -dump:format=b,file=heaptest.hprof <PID>
$ jhat heaptest.hprof
これで 7000 番にサーバが立つからブラウザで http://localhost:7000 を開いて見ていけば
どういうオブジェクトがどれだけメモリを使ってるか分かる。
SimpleObj 1 個で 20 バイト。
0678デフォルトの名無しさん
2014/07/06(日) 16:59:22.11ID:dl4OC7T3Java のメモリ消費量は、C++ の2倍程度などという生易しいものではない。
0679デフォルトの名無しさん
2014/07/06(日) 17:00:18.62ID:ikMLm2G0動いているプロセスに attach してダンプを取る仕組みだから Thread.sleep で終わらせないようにしているわけ。
0680デフォルトの名無しさん
2014/07/06(日) 17:03:28.26ID:dl4OC7T30681デフォルトの名無しさん
2014/07/06(日) 17:06:01.78ID:ikMLm2G0http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-2.html#jvms-2.7
20バイトってのは64bit版のOpenJDK1.7調べ
0682デフォルトの名無しさん
2014/07/06(日) 17:07:27.69ID:tlPqhdeM0683デフォルトの名無しさん
2014/07/06(日) 17:10:54.74ID:dl4OC7T3今は考える事こそが自分のやるべきことだから。
0684デフォルトの名無しさん
2014/07/06(日) 17:20:22.01ID:tlPqhdeM0685デフォルトの名無しさん
2014/07/06(日) 17:23:05.74ID:dl4OC7T30686デフォルトの名無しさん
2014/07/06(日) 17:34:37.76ID:c4JqBC4Fさすがに知ってるわ
GCもないC++の方が総じてメモリとか速度は優れてるに決まってる
ところで、JavaはC#みたいに値型導入しないの?
0687デフォルトの名無しさん
2014/07/06(日) 17:45:08.97ID:dl4OC7T3メモリを数十倍も食うのをどこで知ったの?
WebPageがあるなら、URLをどうぞ:
0688デフォルトの名無しさん
2014/07/06(日) 17:53:50.20ID:ikMLm2G0http://hg.openjdk.java.net/jdk7/jdk7/hotspot/file/c7f3d0b4570f/src/share/vm/oops/oop.hpp
PHP しか使わないから Java のことは全然わからん。
誰か詳しい人教えてくれ。
0689デフォルトの名無しさん
2014/07/06(日) 18:15:07.74ID:dl4OC7T3分かっているよね? さらに、参照の表面的なバイト数だけでも駄目。
参照が表面的に 4 バイトしか使ってない様に見えても、ユーザー
ランドでは見えない関連データが沢山存在している可能性が有る。
例えば、GCの「ウォーク」を行うためのリンクポインタなど。
また、new CMyData の場合、CMyData の内部表現のサイズが
分かっただけでは意味が無いことも分かってる?
0690デフォルトの名無しさん
2014/07/06(日) 18:30:07.48ID:c4JqBC4Fhttp://ja.m.wikipedia.org/wiki/Java%E3%81%AE%E6%80%A7%E8%83%BD
詳しくは書いてないけど、何と無くとか、経験的にとか、可能性とかいうのよりはマシ
ウォークっての検索したけどうまくでない
なんか別の言い方ある?
0691デフォルトの名無しさん
2014/07/06(日) 18:47:01.26ID:dl4OC7T3OS標準のタスクマネージャーなどでメモリ使用量を見るのが最も
正確。Javaの付属ツールのようなものが表示するのが実メモリ使用量
だとは限らない。個々のオブジェクトのサイズなどを表示しても
余り意味は無い。JVM全体でどれだけ使用しているかが大事。
Javaのクラスライブラリの初期メモリ使用量 + オブジェクトの確保に
伴うメモリ使用量
となるので、オブジェクトを増やしたときの変化の様子を見ると良い。
0692デフォルトの名無しさん
2014/07/06(日) 18:54:07.35ID:8H24GUT0それがそうでもないんだよな。
たとえばアプリってのは小さいメモリ、1KB未満とかね。
そういったサイズを何個も生成する。
でも、その小さい単位毎にOSからメモリ要求したら
パフォーマンスが悪い。だからある程度固まったブロックで
メモリ要求をする。
つまりアプリで使用しているが、実際には空きであることがおおいんだよ。
でもアプリ内の空きメモリはOSからみれば使用中扱い。
だから実際に使用しているメモリとタスクマネージャのメモリをみても
正確なことはわからないんだよね。
だからJavaは専用のツールを用意している。
0693デフォルトの名無しさん
2014/07/06(日) 19:07:44.59ID:ikMLm2G0大変参考になりました。感謝します。
0694デフォルトの名無しさん
2014/07/06(日) 19:30:04.71ID:DB81ilAHせめてPHPのメモリの話をしろ
0695デフォルトの名無しさん
2014/07/07(月) 01:38:10.57ID:WuDwAVLfGC制御したことないのだろうな
メモリ消費量が多いプログラムもしたことがないのだろうな
0696デフォルトの名無しさん
2014/07/07(月) 07:21:58.57ID:X/YVfDYMシステムの負担からすると、OSから見てのメモリ使用量の方が大事。
0697デフォルトの名無しさん
2014/07/07(月) 07:42:20.97ID:X/YVfDYM例えば50MBしか使ってないのに、タスクマネージャーでは150MBと表示される
という事なの? じゃあ、残りの 100MB はいつ使ってくれるの?
メモリブロック間の「スキマ」の事だとしたら、そういう無駄をなくす
事が GC の役割じゃないの?
GC などない C++ だと 200KB で済むんだよ。
0698デフォルトの名無しさん
2014/07/07(月) 08:05:00.00ID:bzyQG1wL0699デフォルトの名無しさん
2014/07/07(月) 08:50:56.08ID:n46FrZRh0700デフォルトの名無しさん
2014/07/07(月) 09:16:04.79ID:XWsYxeAh. 〃 ヽル1'´ ∠:::::::::::::::::i
i′ ___, - ,. = -一  ̄l:::::::::::::::l
. ! , -==、´r' l::::::/,ニ.ヽ
l _,, -‐''二ゝ l::::l f゙ヽ |、 ここはお前の日記帳じゃねえんだ
レー-- 、ヽヾニ-ァ,ニ;=、_ !:::l ) } ト
ヾ¨'7"ry、` ー゙='ニ,,,` }::ヽ(ノ チラシの裏にでも書いてろ
:ーゝヽ、 !´ " ̄ 'l,;;;;,,,.、 ,i:::::::ミ
::::::::::::::::ヽ.-‐ ト、 r'_{ __)`ニゝ、 ,,iリ::::::::ミ
::::::::::::::::::::Vi/l:::V'´;ッ`ニ´ー-ッ-,、:::::`"::::::::::::::;゙ , な!
:::::::::::::::::::::::::N. ゙、::::ヾ,.`二ニ´∠,,.i::::::::::::::::::::///
:::::::::::::::::::::::::::::l ヽ;:::::::::::::::::::::::::::::::::::::::::::/ /
::::::::::::::::::::::::::::::! :|.\;::::::::::::::::::::::::::::::/ /
0701デフォルトの名無しさん
2014/07/08(火) 00:08:37.76ID:yingp3+3解放されたメモリはすぐOSにはかえさず、また確保があったときにそこから割り当てる
>メモリブロック間の「スキマ」事だとしたら、そういう無駄をなくす事が GC の役割じゃないの?
ちがう。GCの役割は無駄をなくすことではなくメモリ管理の手間を減らすこと
むしろメモリに余裕があれば重たい解放処理はあまり行われない
>GC などない C++ だと 200KB で済むんだよ。
管理の手間を代償に速度と低メモリを選択した言語なんだから少ないのは当たり前
そもそも200KBというのはなんの数値だ?
タスクマネージャのどの数値のことを言っているのかわからないとなにも言えん
PrivateBytesはメモ帳ですら数MBいっているのにそれよりシンプルなソフトなのか
0702デフォルトの名無しさん
2014/07/08(火) 02:15:19.99ID:CfgSejZApublic $i;
}
PHPでこれ一個newしたら400バイト以上使う
0703デフォルトの名無しさん
2014/07/08(火) 03:52:52.21ID:M37XHoidそういう検証しやすいネタはいいね。
こういうコードを書いて5秒後にpsコマンドでVSZとRSSがどれだけ増えるかやってみたよ。
<?php
class A {
public $i;
}
sleep(5);
for($i = 0; $i < $argv[1]; $i++) {
$o[$i] = new A();
}
sleep(5);
new 1個・・・ VSZ:+0KB RSS:+0KB
new 10個・・・ VSZ:+0KB RSS:+0KB
new 100個・・・ VSZ:+0KB RSS:+0KB
new 200個・・・ VSZ:+260KB RSS:+0KB
new 500個・・・ VSZ:+260KB RSS:+0KB
new 700個・・・ VSZ:+260KB RSS:+260KB
new 1000個・・・ VSZ:+260KB RSS:+260KB
new 1020個・・・ VSZ:+260KB RSS:+260KB
new 1023個・・・ VSZ:+260KB RSS:+260KB
new 1024個・・・ VSZ:+520KB RSS:+260KB
new 1050個・・・ VSZ:+520KB RSS:+260KB
new 1500個・・・ VSZ:+520KB RSS:+524KB
切りが良い数字で増えたね。このことから1個ごとにメモリが増えるわけじゃなく、
ある単位ごとで一気にメモリが増えている。
ここから計算するとオブジェクト1個あたり260バイトのようだ。
■ このスレッドは過去ログ倉庫に格納されています