JAVAのジェネリクスでデータ構造とアルゴリズム
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
2007/05/07(月) 20:35:08マイライブラリを作りたくなりますね。
0002デフォルトの名無しさん
2007/05/07(月) 22:00:510003デフォルトの名無しさん
2007/05/08(火) 01:54:080004デフォルトの名無しさん
2007/05/08(火) 05:14:300005デフォルトの名無しさん
2007/05/08(火) 06:50:35-- C++ --
vector<int> v, v2;
for(int i = 0; i < 2000000; ++i){
v.push_back(i);
}
for(int i = 0; i < 2000000; ++i){
v2.push_back(v[i]);
}
-- C# -- C++より2倍くらい遅い
ArrayList v = new ArrayList(), v2 = new ArrayList();
for(int i = 0; i < 2000000; ++i){
v.Add(i);
}
for(int i = 0; i < 2000000; ++i){
v2.Add(v[i]);
}
-- Java -- C++より5倍くらい遅い
List<Integer> v = new ArrayList(), v2 = new ArrayList();
for(int i = 0; i < 2000000; ++i){
v.add(i);
}
for(int i = 0; i < 2000000; ++i){
v2.add(v.get(i));
}
0006デフォルトの名無しさん
2007/05/08(火) 07:22:383GのCPUと1Gのメモリなら、実際何秒の差がでるよ?
2倍とか5倍とかアホくせーわ
0007デフォルトの名無しさん
2007/05/08(火) 08:07:492倍/5倍を誤差と言えるぬるい環境でコーディングしてる奴は反応しなくていいよ。
0008デフォルトの名無しさん
2007/05/08(火) 08:37:54まだというかもうこれ以上Javaは速くならんよ
>>C++より5倍くらい遅い
そのコードでほんとに5倍も差が出るか?
0009デフォルトの名無しさん
2007/05/08(火) 09:10:410010デフォルトの名無しさん
2007/05/08(火) 09:27:41実用的なコードで比較するべきだと思うのだが
0011デフォルトの名無しさん
2007/05/08(火) 09:45:53どう考えてもC++と比べたら遅そう。
0012デフォルトの名無しさん
2007/05/08(火) 10:41:59困ってないんでしょ?
x2やx5で困ってる奴だけ来ればいいよ。
0013デフォルトの名無しさん
2007/05/08(火) 11:56:56調べたけど、最近はUseOnStackReplacementって不要?
JDK6.0u1 Windows 32bit版
そのまま: 1.7秒
Listのサイズ指定: 1秒
Listサイズ指定+VMのオプション指定: 0.65秒
VMオプションは-server -XX:NewRatio=2 -XX:+DoEscapeAnalysis
どれにUseOnStackReplacementつけても、
殆ど効果が分からなかった。
まあgenericsとなんの関係もないけど。
001413
2007/05/08(火) 11:57:44-XX:+UseCompilerSafepointsも一緒に指定してます。
0015デフォルトの名無しさん
2007/05/08(火) 13:16:02まあ、こういうのが積み上がって、最終的にJavaアプリはもっさりになるんだろうね。
0016デフォルトの名無しさん
2007/05/08(火) 16:51:590017デフォルトの名無しさん
2007/05/08(火) 21:49:330018デフォルトの名無しさん
2007/05/08(火) 22:07:26っていうのが最近の傾向だわな
0019デフォルトの名無しさん
2007/05/08(火) 22:35:56たいへんだねぇ、頭悪いと
0020デフォルトの名無しさん
2007/05/08(火) 23:45:170021デフォルトの名無しさん
2007/05/09(水) 00:52:34その調子だ
0022デフォルトの名無しさん
2007/05/09(水) 01:13:59データ構造とアルゴリズムはどうした?
0023デフォルトの名無しさん
2007/05/09(水) 07:31:23もっともだと思う。住み分けはC++とRubyくらいで、あとはいらないな。
0024デフォルトの名無しさん
2007/05/09(水) 09:56:33Genericsの話題に戻すと
----対応前
List list = new ArrayList();
list.add(new Hoge());
Hoge h = (Hoge)list.get(i);
----対応後
List<Hoge> list = new ArrayList<Hoge>();
list.add(new Hoge());
Hoge h = list.get(i);
----
だろ?キャストしなくて良いだけじゃん?
やたらコーディング量だけ増えて面倒なのはtemplateと変わらんし
汎用性無くなる分templateに負けてる
■ このスレッドは過去ログ倉庫に格納されています