- PHPがいかに駄目言語であるかをちゃんと説明
703 :デフォルトの名無しさん[sage]:2014/07/08(火) 03:52:52.21 ID:M37XHoid - >>702
そういう検証しやすいネタはいいね。 こういうコードを書いて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バイトのようだ。
|
- PHPがいかに駄目言語であるかをちゃんと説明
704 :デフォルトの名無しさん[sage]:2014/07/08(火) 03:58:15.34 ID:M37XHoid - さてここで、疑問がある。
class A { public $i; public $j; public $k; public $l; public $m; public $n; } これだと、new 1023個した場合どうなるか?である。 $i一個のとき1023個で260KB、1024個だと520KBだから、 $i 〜 $n の6個だと、1023個newしたら260KBを超えるだろうと、 単純に考える。 だけど答えは260KBのままだった。 つまり、話はそんなに単純じゃないんだよね。 オブジェクト1個であっても、そこで使用しているバイト数の分確保しているのではなく、 ある程度のブロックで確保していると考えられる。
|
- PHPがいかに駄目言語であるかをちゃんと説明
705 :デフォルトの名無しさん[sage]:2014/07/08(火) 04:14:03.91 ID:M37XHoid - やってみたら、$i〜$pの8個の変数まで増やしても
260KBのままだった。 単純計算だが、 class A { public $i; } だと1個あたり260バイトだが、実際にはパディング領域があるからで、 その内訳は多くても一つの変数あたり約32バイトだろう。 実際にはクラス定義にもう少しメモリをしようてい、 変数自体は1つ16バイトとかな?
|
- PHPがいかに駄目言語であるかをちゃんと説明
706 :デフォルトの名無しさん[sage]:2014/07/08(火) 04:23:41.10 ID:M37XHoid - 念の為に言っておくが、メモリも断片化する。
たとえば1KBのメモリを100個確保して、 偶数個目のメモリを開放すると見事に 1KBごとに使用している・していないという形に断片化する。 OSからメモリを確保する時に、ある程度のブロック単位で 確保するのは、この断片化をなるべく起こらないようにするため。 メモリを確保する時に使用していない領域があるのが嫌だと思うかもしれないが それはパフォーマンスを上げるために必要なことで、それはC言語のmallocでも やっていることなんだよ。 メモリプールとか断片化という単語でググればわかるよ。
|
- オブジェクト指向なんて今すぐやめてください
511 :デフォルトの名無しさん[sage]:2014/07/08(火) 21:06:44.87 ID:M37XHoid - ×アプリ側でも
○ライブラリがやってる。
|
- PHPがいかに駄目言語であるかをちゃんと説明
720 :デフォルトの名無しさん[sage]:2014/07/08(火) 23:05:48.32 ID:M37XHoid - >>718
> PHPは名前空間の\や$this->必須なのも糞いな。嫌がらせとしか思えんセンスだわ C++を参考にしているからかな。
|
- Perlについての質問箱 63箱目
453 :デフォルトの名無しさん[sage]:2014/07/08(火) 23:27:03.04 ID:M37XHoid - >>451
俺も他の言語がどんなシェアか知りたいな。 俺が知っているのはここだけだけど、このデータとはまた違うから 君は俺が知らない何かのデータの話をしているのだろう。 教えてくれ。 参考までに http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html 1 1 C 17.145% -0.48% 2 2 Java 15.688% -0.22% 3 3 Objective-C 10.294% +0.05% 4 4 C++ 5.520% -3.23% 5 7 (Visual) Basic 4.341% +0.01% 6 6 C# 4.051% -2.16% 7 5 PHP 2.916% -4.27% 8 8 Python 2.656% -1.38% 9 10 JavaScript 1.806% -0.04% 10 12 Transact-SQL 1.759% +0.19% 11 9 Perl 1.627% -0.52% 12 13 Visual Basic .NET 1.495% +0.24% 13 37 F# 1.093% +0.86% 14 11 Ruby 1.072% -0.51%
|
- Perlについての質問箱 63箱目
455 :デフォルトの名無しさん[sage]:2014/07/08(火) 23:32:36.76 ID:M37XHoid - >>454
ちゃんと人の話聞いてる? 俺が知っているデータはだめなんだろうから、 君が知っている信頼できるデータを 教えてって言ってるんだよ。 なんでそんなムキになるのさ?
|
- Perlについての質問箱 63箱目
458 :デフォルトの名無しさん[sage]:2014/07/08(火) 23:43:38.90 ID:M37XHoid - ID:9pUTAEAt が嘘を言っていないのなら、
いつかは、80%はPythonオンリーってデータを どこから持ってきたか言ってくれるはず。 それとは別に自分で探してみたが、80%はPythonオンリーってデータは見つからなかった。 代わりにgithubのデータを見つけた。これはオープンソース限定だろうから偏りあるだろうってのは わかってるつもり。 http://redmonk.com/dberkholz/2014/05/02/github-language-trends-and-the-fragmenting-landscape/
|
- PHPがいかに駄目言語であるかをちゃんと説明
725 :デフォルトの名無しさん[sage]:2014/07/08(火) 23:48:50.24 ID:M37XHoid - そのうち>>723はテキストエディタの力に
頼ってる時点でダメとかいいそうだよな。 補完するな、全てを覚えろ。みたいなw
|
- Perlについての質問箱 63箱目
459 :デフォルトの名無しさん[sage]:2014/07/08(火) 23:50:24.74 ID:M37XHoid - 俺何か難しい質問した?
80%はPythonオンリー っていうのは 何を見てそういったのか聞いただけなんだけど。 これに答えられないってことは ありえないと思うんだよね。 嘘でも言ってない限りさ。 さすがに嘘はいってないと思うよ。 だから答えて欲しいね。 俺の信頼を裏切らないでくれ。
|