トップページtech
981コメント306KB

PHPがいかに駄目言語であるかをちゃんと説明

■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん2013/11/15(金) 20:57:08.46
age推奨で

他の言語と比較しながら、具体的にちゃんと説明してください!
0557デフォルトの名無しさん2014/02/12(水) 15:18:50.08
読みにくいと思ってる>>556
民として選ばれなかったんですね?
0558デフォルトの名無しさん2014/02/12(水) 15:34:19.18
そんあことより賤民言語の極みの英語を何とかしたい
0559デフォルトの名無しさん2014/02/12(水) 16:05:42.97
プログラミング技法の記事って、ほとんど英語で書かれてるわけで
日本語は盲目に生まれついたのと同じレベルの不幸
0560デフォルトの名無しさん2014/02/12(水) 19:23:52.81
いやperlは読みにくいよ
0561デフォルトの名無しさん2014/02/12(水) 20:18:02.70
Perlはブロックスコープで変数宣言必須なのがいい
0562デフォルトの名無しさん2014/02/12(水) 20:29:24.92
>>561
宣言必須に出来るだけだっけ?
0563デフォルトの名無しさん2014/02/13(木) 00:27:14.58
>>448,451
こういうことであってる?
これだと無名関数の呼び出しは性的コールじゃないから、別ケースだと思う。
どういう挙動がいいかは分からん。

class X {
static function f() {
static::g();
return function() { static::g(); };

}

static function g() {
print("X");
}
}

class Y extends X {
static function g() {
print("Y");
}
}

$cg = X::f();
$cg();

$dg = Y::f();
$dg();

// 5.3 => fatal
// 5.4 => XXYX
05645362014/02/13(木) 00:59:03.57
今見たら読みにくかったので直しました。すんまそん。

class X {
static function f() {
static::g();
$g = function() { static::g(); };
$g();
}

static function g() {
print("X");
}
}

class Y extends X {
static function g() {
print("Y");
}
}

X::f();
Y::f();
0565デフォルトの名無しさん2014/02/13(木) 07:00:21.08
>>562
ワンライナーや個人的スクリプトでない限りそうするのがマナーだね
0566デフォルトの名無しさん2014/02/13(木) 18:21:01.82
>>563
マニュアルではそのオブジェクトのクラスと同じになるって書いてあるから
仕様通りならClosureのクラスメソッドがコールされることになってしまうような
とまあ戯言はおいといて、5.4の方向性でいくとフツーのClosureはYに、
Static closureはスコープエラーか何かになるべきじゃないかな

つーかどんだけstatic使いまわすのかと
0567デフォルトの名無しさん2014/02/13(木) 22:42:59.45
クロージャからstaticとか、なんか嫌な予感しかしない
0568デフォルトの名無しさん2014/02/14(金) 00:10:47.39
>>563,566
クロージャはクラス内で使うと、暗黙にクラスのメンバのように扱われるようになったから
「クロージャが宣言されてるオブジェクトのクラスと同じ」になると解釈できる
staticなクロージャも$thisをuseしてないだけで同様じゃねーか?

かつ、クロージャはレキシカルであると期待されてるから、後で評価しても定義された
時点のクラスを返すのは不自然ではない

クロージャを基準に考えると遅延静的束縛の方が無意味
0569デフォルトの名無しさん2014/02/15(土) 03:22:15.76
> クロージャはクラス内で使うと、暗黙にクラスのメンバのように扱われるようになったから

というか任意のインスタンスにバインドできる
ようはjsの関数だ

無名関数としてだけ使うこともできるし、クロージャとして使うこともできるし、
プロトタイプベースの関数オブジェクトのようにも使えるキメラ的な何か
0570デフォルトの名無しさん2014/02/15(土) 23:06:51.45
クロージャの中でLSB使えないってのは分かったけど定義クラスからのメソッドコールとみなすのは無理筋すぎる…
0571デフォルトの名無しさん2014/02/16(日) 00:07:02.70
PHPは言語定義が甘い
0572デフォルトの名無しさん2014/02/17(月) 10:59:23.43
adaやc++ほど優れた言語仕様を作ったところで、そんなもの誰も読まないじゃないか
0573デフォルトの名無しさん2014/02/18(火) 23:48:09.41
c++が優れてるなんてもちろん皮肉ですよね(棒)
0574デフォルトの名無しさん2014/02/19(水) 00:03:11.39
優れた、の意図するところに依るかな
少なくともナイスだとかマーベラスとかではない
ありゃ標準化の奴らが現場の空気読まずコンプリートとかクリンリネスあたりで優れようとしてるからたち悪いんだと思う

言語仕様に賭ける情熱は高いと思うよ
0575デフォルトの名無しさん2014/02/25(火) 19:23:38.05
最近Pythonばっか触ってたらPHPの書き方忘れた
PHPはWeb用のクライアント言語としてはナンバーワンだ
Pythonなんかめんどくさいの何のって
PHPは楽で本当に良い
ただし、問題は文字コード周り
コレのおかげでPython使わないといけなくなってる
0576デフォルトの名無しさん2014/02/25(火) 19:31:27.23
>>575
文字コードの問題を詳しく
0577デフォルトの名無しさん2014/02/25(火) 22:19:05.09
mbstrじゃダメっすか
0578デフォルトの名無しさん2014/02/26(水) 04:52:11.53
正確に覚える必要がある言語って、PHPとSQLみたいな仕事に直結するものだけだよね?
後は、趣味でHaskellでも叩いてるのが幸せ。
0579デフォルトの名無しさん2014/02/26(水) 08:31:01.25
Haskellってほんと趣味って感じ
実用で使われてるプロジェクトとかあんのかな
0580デフォルトの名無しさん2014/02/26(水) 10:08:56.31
PHPが悪いわけでなく、使うやつ次第だろ。
ベーシックやフォートランやコボルやアセンブラが得意な人はそれがいいわけで。
PHPが得意な人には良い言語で、苦手ならそうでないだけ。
どれでもそう。
0581デフォルトの名無しさん2014/02/26(水) 10:19:42.76
Haskellは特定環境下での速度がCより速いから
証券の高速売買とかで使われてるよ
0582デフォルトの名無しさん2014/02/26(水) 13:29:22.05
>>581
市販アプリケーションレベルでしか考えてない俺が無知でした
0583デフォルトの名無しさん2014/02/26(水) 14:33:40.76
HaskellやC言語が早いのでなく、コンパイラが早いだけ。
JavaScriptでHaskellやC言語のインタプリタ作れば遅い。
0584デフォルトの名無しさん2014/02/26(水) 14:50:21.67
M$の吐いたコードよりv8の方が速いからな
0585デフォルトの名無しさん2014/03/05(水) 01:26:31.10
pyramidよりもbottleよりも生PHPが速いのならwebサイトにPythonを使うメリットを感じないのですが、なぜ移行する人が多いのでしょうか。

1.phpのフレームワークよりはpythonのフレームワークの方が速いから。

2.webでもpythonを使っていたい。

こんな理由を想像してみました。
実際の意見が知りたいです。
0586デフォルトの名無しさん2014/03/05(水) 01:59:40.37
PHPの文字連結は「.」でやるという話を聞いてなんて複雑怪奇な言語なんだと思ったあの日
0587デフォルトの名無しさん2014/03/05(水) 02:11:35.95
>>585
データマイニング用のツールを使いたい
PHPでサーバー側のプログラムを書きたくない
0588デフォルトの名無しさん2014/03/05(水) 02:13:17.05
>>586
Gnuplotか何か別の言語でも、.を文字連結に使っていたよ
0589デフォルトの名無しさん2014/03/05(水) 11:31:53.58
>>585
1はない

pythonのが堅牢だからでないか?
0590デフォルトの名無しさん2014/03/06(木) 11:13:17.41
>>586
それPerl由来ですし
0591デフォルトの名無しさん2014/03/06(木) 19:16:37.74
+でやるより文字列連結を明示できて良いと思う
0592デフォルトの名無しさん2014/03/06(木) 20:46:44.01
>>591
"5" - 2 // 3
"5" + 2 // "52"

こんなJavaScriptは嫌いだ
0593デフォルトの名無しさん2014/03/09(日) 14:45:49.46
現在プログラム板のID制導入の投票を実施中です
よろしくお願いします

プログラム板 強制ID制導入に関する投票スレ
http://kohada.2ch.net/test/read.cgi/vote/1394290844/
0594デフォルトの名無しさん2014/03/10(月) 02:52:49.63
>>593
0595デフォルトの名無しさん2014/03/10(月) 15:41:25.96
質問スレの回答する側が
http://kohada.2ch.net/test/read.cgi/php/1390166591/497
>saltが判明していれば、saltが無いのと同じ。
のレベルなこと
こうやって、だめなサイトが構築され、だめなブログ記事が書かれ、だめな知識が継承されていく
もう伝統芸
0596デフォルトの名無しさん2014/03/10(月) 17:23:44.72
>>595
他スレの一部を転載するな
ブルートフォースアタックに関しての話だろ、あってるよ
0597デフォルトの名無しさん2014/03/11(火) 08:28:13.57
PHPerにジェネレーターを使えてる奴いるのかね?
0598デフォルトの名無しさん2014/03/11(火) 09:02:01.60
>>596
元をはっきりさせた上で使うのは、引用っていうんやで
0599デフォルトの名無しさん2014/03/11(火) 21:25:39.06
あのフレームワークが速い!爆速!とか煽り文句書いてるけど、
単にコンドームは薄い方が気持ち良いってだけ?
0600デフォルトの名無しさん2014/03/12(水) 01:47:49.84ID:4zZOK386
その理屈なら生最強だがそうはなってない
フレームワークというコンドームに求められるのは薄さより安心感的なものなんだろうな
俺俺フレームワークなんてまるで外出しテクを競う愚行というところか
0601デフォルトの名無しさん2014/03/12(水) 05:09:22.10ID:3SicOySt
__callが威力でかすぎて他の言語使える気がしない
0602デフォルトの名無しさん2014/03/12(水) 05:10:20.73ID:3SicOySt
今気付いたが強制ID始まったか、よかったよかった
0603デフォルトの名無しさん2014/03/13(木) 01:10:38.13ID:1g7vjGnB
初心者を脱するためのコラムにしか思えないものが
上級者になるためのコラムとは、さすがPHPerクォリティ
http://resocia.jp/column/368/
0604デフォルトの名無しさん2014/03/13(木) 01:35:34.90ID:AIWZ4REO
ざーっと読んで見たけど、「上級者になるために知っておきたいこと」って題ならこんな入り口内容でもいいんじゃねーの
「これを読めばあなたも上級者!」なら同じ感想だけどさ
言及弱くて、よくて「そもそもSPLとかさー」、とかの談義が始まりゃマシ程度のレスだな
ミスリード狙いっぽく読めるのがなんかどうもな
0605デフォルトの名無しさん2014/03/13(木) 09:11:21.29ID:LTbtGzLp
>>603
結局ひねくれて見えるんだよな、この手の記事
0606デフォルトの名無しさん2014/03/13(木) 10:24:05.81ID:1g7vjGnB
>>603
そこのコラムのもう一人の執筆者の肩書きが

PHP技術者認定機構 理事長
Rails技術者認定試験運営委員会 委員長

同じ穴か
0607デフォルトの名無しさん2014/03/13(木) 18:45:09.88ID:qaG+7LaQ
>>603
PythonやRubyを仕事で使うのを諦めた層は、そんな糞コラム読まないだろ
田舎零細企業でAccessやExcelを弄ってる40歳以上を想定してるはず
0608デフォルトの名無しさん2014/03/25(火) 09:02:21.24ID:UiDCLV+E
>>1 だって、作者自身がそう言ってたでしょ? 仕事やっつけのためだけに作ったって。
0609デフォルトの名無しさん2014/03/31(月) 17:25:09.15ID:WQVzru6S
ttp://fc2information.blog.fc2.com/blog-entry-1354.html
あれテストがない?と思ったらStaticまみれワロタ
0610デフォルトの名無しさん2014/04/09(水) 12:21:49.63ID:5hcMVv4L
PHP最近勉強し始めたんだけどHTMLコードって<?PHP?>の外に書くべきか中に書くべきか迷う
視認しやすさは絶対外に書いたほうだと思うんだけどいろんなプログラムのソース見てると
$header = <<< HTML 〜みたいなことして最期にechoしてるのが結構あったので気になった
実際どっちがいいの?
0611デフォルトの名無しさん2014/04/09(水) 18:03:12.55ID:sLXa1YUE
マルチポスト乙
0612デフォルトの名無しさん2014/04/12(土) 16:17:32.58ID:RuY08Pck
PHPが駄目言語であるかの様なデタラメを流布する
目的のスレがかえってPHPが優れている言語である
ことを証明してしまった。
糸冬
0613デフォルトの名無しさん2014/04/15(火) 09:10:13.92ID:LUmefa1W
>>612
perl 死んでる
ruby, py ハハッ それどうすんのさ

php 最強
0614デフォルトの名無しさん2014/04/20(日) 22:28:50.63ID:6zjHScac
aptanaっていうIDE使ってるんだけど、
pearライブラリーのコードアシストを出すには何か設定が必要なんですか?
それともドキュメント見ながらメソッド打たなきゃいけないんですか?

OSはwin8です。
0615デフォルトの名無しさん2014/05/31(土) 09:21:39.25ID:1YpY4EUA
なんでphpだけ専用スレないの?
0616デフォルトの名無しさん2014/05/31(土) 11:59:32.10ID:YgxuCMdP
php板はあるのにな
0617デフォルトの名無しさん2014/06/06(金) 02:56:12.95ID:UgiouvQd
PHPも嫌いじゃないけどCakeだけは勘弁して
0618デフォルトの名無しさん2014/06/22(日) 23:28:23.75ID:I40vD2Or
PHPでJava並にオブジェクト指向で書いたら、
すごく重いのですが、仕様ですか?
0619デフォルトの名無しさん2014/06/22(日) 23:40:50.98ID:dgCxS7of
それにはまず、重いという証拠を
だしてください。

話はそれからです。
0620デフォルトの名無しさん2014/06/23(月) 01:47:44.99ID:x59p+xZh
>>618
PHPがJAVAより遅いのは仕様です
PHPで単にオブジェクト思考にしたら遅くなったのだとしたら、あなたの能力の問題です
0621デフォルトの名無しさん2014/06/23(月) 11:36:05.41ID:2cPnnJRd
>>618
PHPが遅いというより、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/
>>621
> 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/
なお、Java は整数演算は C/C++ の 1/3 程度の速度を持っているが、
メモリ確保が入ってくるととたんに性能が落ちる。

経験的には、同じ容量を確保した場合、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/
なぜJavaがメモリを大量消費するかについて、自分なりの見解を述べ
よう。

・参照の変数の内部表現に必要なバイト数が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:lRUtVmtM
いつからアンチJAVAスレになった
0628デフォルトの名無しさん2014/06/28(土) 17:01:39.43ID:A3rASK73
PHPって配列変数のシンタックスシュガー付いたんだ
あとは文字列操作をメソッド化してほしい
0629デフォルトの名無しさん2014/07/01(火) 21:05:42.50ID:GeIQQ2aO
見解とか妄想してないで知りたかったらソース読めよw
0630デフォルトの名無しさん2014/07/02(水) 16:21:25.63ID:fvFaAf5b
>>629
誰に言ってるの?
0631デフォルトの名無しさん2014/07/02(水) 16:41:49.10ID:UOkv1KGW
なるべく他の処理を止めないように、
今では、JavaのGCは一度にやらず、
10msごとに小刻みに行う

また、使うメモリの量が増えると、
GCにかかる時間も増える
0632デフォルトの名無しさん2014/07/05(土) 10:04:44.86ID:e1V2szvr
>>631
経験的には、Javaは、C/C++ の 100〜1000倍のメモリを食う。
これは、Swingなどの動的ライブラリの大きさが大きいというだけではなく、
アプリ独自のデータに対しての話。C++なら300Kバイトもかかるかかからないか
のような場合でも、Javaでは、150MBくらい消費した。
つまり、500倍程度。
0633デフォルトの名無しさん2014/07/05(土) 11:38:22.81ID:mAp+Ajil
経験的()
0634デフォルトの名無しさん2014/07/05(土) 12:19:36.06ID:atmyUkOz
いつからアンチJAVAスレになった

他の言語を叩くやつって何か抜けてる奴が多い
0635デフォルトの名無しさん2014/07/05(土) 16:54:43.41ID:e1V2szvr
>>634
話の流れじゃん。
頭が固い人には創造的結果は出来ないよ。
0636デフォルトの名無しさん2014/07/05(土) 16:58:20.65ID:e1V2szvr
>>633
嘘だと思うなら実測してみなよ。
0637デフォルトの名無しさん2014/07/05(土) 17:48:34.11ID:DUJJhZn/
>>632
それは嘘だと思います。

実測データ出せますか?
0638デフォルトの名無しさん2014/07/05(土) 18:19:52.16ID:e1V2szvr
>>637
うーん。絶対間違い無い、と確信できるほどの厳密な調査はして無い。
しかし、

・見た目の上では自作アプリは設計通りの動作をしていること。
 今議題にあがっているデータは見た目でデータ構造が一目瞭然
 になるような物で、間違っていれば分かると思えること。

・メモリ使用量を見ると(たしか)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
>>639
そのとき色々確認したが、大量のメモリを使っていることは確実に
思えた。
0641デフォルトの名無しさん2014/07/05(土) 18:45:33.74ID:e1V2szvr
あと、本質的にはランタイムの大きさではなかった。
なぜなら、オブジェクトの作成を、画面で見えている部分だけに
限定するように修正してみたら大幅に使用量が改善したから。
もしC++だったら、そのような工夫をしなくても余裕だったのが、
プログラムの手間や複雑さが増大してしまったが。
0642デフォルトの名無しさん2014/07/05(土) 18:49:46.37ID:pJl1PMF0
嘘こけ
0643デフォルトの名無しさん2014/07/05(土) 19:00:25.28ID:e1V2szvr
>>642
嘘をついているつもりは無い。
もしかして、試したこと無いで言ってる?

Javaで実際的なアプリを作った経験が有る人は少数派だろうけど、
自分はその「少数派」に当たるかも。

そもそもやってみたことが無い人が多い中で、自分はやってみた
結果で話しているよ。
0644デフォルトの名無しさん2014/07/05(土) 19:12:35.24ID:5Xg0uObF
Javaは仮装マシン動かすからな
0645デフォルトの名無しさん2014/07/05(土) 19:30:12.00ID:DUJJhZn/
+αが必要なだけで、
一つのオブジェクトあたりの
メモリ使用量は変わらないんだよな。
0646デフォルトの名無しさん2014/07/05(土) 19:34:53.19ID:3zLRhjeW
>>625-626
を読んでみた?
0647デフォルトの名無しさん2014/07/05(土) 19:37:24.83ID:1SwtShn+
何でまだJavaの話してんの?
0648デフォルトの名無しさん2014/07/05(土) 19:51:45.11ID:3zLRhjeW
>>647
なぜ、そんな了見が狭いの?
0649デフォルトの名無しさん2014/07/05(土) 20:30:06.08ID:pJl1PMF0
>>643
試したことなく適当こいてるのはお前だろ
0650デフォルトの名無しさん2014/07/05(土) 20:31:59.12ID:3zLRhjeW
>>649
いや、実際的なアプリ製作での実体験に基づいているよ。
0651デフォルトの名無しさん2014/07/05(土) 20:33:00.76ID:3zLRhjeW
まあいいや、信用できないと思うんなら、無視してもいいよ。
こんなんで訴訟なんて起こされても困るし。
0652デフォルトの名無しさん2014/07/05(土) 20:39:10.12ID:pJl1PMF0
>>651
平気で嘘を吐いても良心が痛まない人って居るよね
0653デフォルトの名無しさん2014/07/05(土) 20:42:31.51ID:zqYTQuxN
"思う""予想できる""多分"
0654デフォルトの名無しさん2014/07/05(土) 21:57:34.45ID:lG7Vks4t
VM上で動くんだからメモリ使用量が不利なのは当たり前

単に作りが悪くてメモリリークしてるとか、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:QUzsj6Vp
なぜJavaのメモリの話になっているのか謎だが、
Javaのオブジェクトは.classやらhashCodeやらのヘッダ情報で必ず8バイト食うので、
メモリ使用量で不利になるとの情報あり。これだからプリミティブ型とかでみみっちい事しなきゃならない。
しかし結局オートボクシングのおかげで無駄にオブジェクトが生成されるわけだが
Javaオブジェクトのメモリ構造
http://www.codeinstructions.com/2008/12/java-objects-memory-structure.html
■ このスレッドは過去ログ倉庫に格納されています