トップページ > プログラム > 2014年07月08日 > M37XHoid

書き込み順位&時間帯一覧

3 位/202 ID中時間01234567891011121314151617181920212223Total
書き込み数00022000000000000000010611



使用した名前一覧書き込んだスレッド一覧
デフォルトの名無しさん
PHPがいかに駄目言語であるかをちゃんと説明
オブジェクト指向なんて今すぐやめてください
Perlについての質問箱 63箱目

書き込みレス一覧

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オンリー っていうのは
何を見てそういったのか聞いただけなんだけど。

これに答えられないってことは
ありえないと思うんだよね。
嘘でも言ってない限りさ。

さすがに嘘はいってないと思うよ。
だから答えて欲しいね。
俺の信頼を裏切らないでくれ。


※このページは、『2ちゃんねる』の書き込みを基に自動生成したものです。オリジナルはリンク先の2ちゃんねるの書き込みです。
※このサイトでオリジナルの書き込みについては対応できません。
※何か問題のある場合はメールをしてください。対応します。