+ JavaScript の質問用スレッド vol.109 +

このエントリーをはてなブックマークに追加
952Name_Not_Found:2013/10/07(月) 17:18:32.92 ID:???
innerHTMLより遅いなんてよほど馬鹿なコード書いてるとしか思えん
953Name_Not_Found:2013/10/07(月) 17:19:58.29 ID:???
innerHTMLは遅い
お前の書き方が悪いだけ
http://jsperf.com/jquery-html-vs-empty-vs-innerhtml/9
954Name_Not_Found:2013/10/07(月) 17:24:03.60 ID:???
>>948
実際の動作によって性質を判定する方法をダックタイピング的と言ったのです
これは今後もJavaScriptにおいても重要な手法となるので覚えておいてくださいね
逆にブラウザ名で判別するのはモダンではない
jQuery.browserがなくなったのも同じ傾向上にあるものです
955Name_Not_Found:2013/10/07(月) 17:27:16.08 ID:???
>>951
innerHTMLの方が速い場合もあるよ
場合によって使い分けるべきで、どちらの方が絶対にいいというもでもない
956Name_Not_Found:2013/10/07(月) 17:28:34.62 ID:???
そりゃ逆だ
物の肩書ではなく持っている性質によって振る舞いが決定される
つまり主導権は物側にあるというのがダックタイピングだ
性質を量るというのはタイプ、つまり型で判定するということで
ダックタイピングとは真逆だぞ
957Name_Not_Found:2013/10/07(月) 17:29:02.13 ID:???
>>954
それをダックタイピング的と呼ぶのは恥ずかしいからやめとけ
958Name_Not_Found:2013/10/07(月) 17:35:38.33 ID:???
>>955
そうか〜?innerHTMLでできることをパーサーを動かさないノード操作に
置き換えて遅くなるとかほとんど無かったんだが
一見すると絶対innerHTMLの早いだろう?って感じのコードでも実際に
計ってみるとノード操作の方が早かったりした
まあそれでも、誤差程度の差にしかならん場所には、
わかりやすさ重視でinnerHTMLを使ったりするけどね
959Name_Not_Found:2013/10/07(月) 17:39:34.49 ID:???
>>956
それは違います
レンダリングという実際のふるまいで判定しているのですからダックタイピング的です
比較対象が最終段階で数字となっているのであなたは勘違いしているのです
ものごとの本質を見て下さいね
>>957
C級技術者には伝わらないということが嫌というほど分かったで気を付けますね
960Name_Not_Found:2013/10/07(月) 17:53:21.45 ID:???
てか少し前に、このスレでもinnerHTMLの方が速い場合もあるという結論が出てたと思うけど
961Name_Not_Found:2013/10/07(月) 17:59:58.58 ID:???
>>959
ダックタイピングっていうのはあくまでも型付けの手法
実際のふるまいは関係無い
実際のふるまいでなくメソッドの名前等(シグネチャ)で判別される
異なるふるまいをするとしても同じシグネチャのメソッドが揃っていれば同じ型とみなされる
962Name_Not_Found:2013/10/07(月) 18:02:06.27 ID:???
>>959
俺俺言語やめちくり〜
963Name_Not_Found:2013/10/07(月) 18:06:16.77 ID:???
>>959
素直に「そうだったんですか」とか
「勘違いしました」って謝ればいいのに
引込みがつかなくなるとこまで意地を張る哀れな性格の奴だな

今からでも「分かりました」って一言かけば
こちらとてそれ以上追求しないし
お前さんの人間度もupするぞ

いい加減見苦しい意地張りはやめよう
恥ずかしいよ?
964Name_Not_Found:2013/10/07(月) 18:10:44.15 ID:???
>>960
一般的な操作においては明らかに遅いです
965Name_Not_Found:2013/10/07(月) 18:15:48.54 ID:???
コードも貼られてないんだから一般的なケースで話すのが当たり前
〜の場合もあるとか言ってたらキリがないし

パフォーマンス云々じゃなくて質問者のコードの問題を取り去って
改善するという考え方でいかないと
966Name_Not_Found:2013/10/07(月) 18:25:44.34 ID:???
javascriptで関数の引数を配列として明示したいのですが
どのようにやればいいのでしょうか?

function(int[] arr){}
みたいにやりたいのですが
967Name_Not_Found:2013/10/07(月) 18:31:13.20 ID:???
配列として明示するって具体的にどういうこと?
見た目の問題?
配列以外をエラーにしたいの?
それとも初期値を空配列にしたいとか?
もしくはargumentsみたいなこと言ってるんじゃないよね?
968Name_Not_Found:2013/10/07(月) 18:45:49.65 ID:???
>>967
見た目の問題です

配列ってわかるようにしたいです

function(array arr){}みたいにはできないみたいですし
教えてください
969Name_Not_Found:2013/10/07(月) 18:48:49.50 ID:???
>>968
jsdoc
970Name_Not_Found:2013/10/07(月) 18:49:07.94 ID:???
>>968
/**
* @param {Array} arr 配列でね!
*/
function( arr ){}

ではだめかね
971Name_Not_Found:2013/10/07(月) 18:51:43.08 ID:???
は?
「arr」で配列だって一目瞭然じゃない?
この程度にDOCなんていらんよ
972Name_Not_Found:2013/10/07(月) 18:53:21.40 ID:???
ダックタイピング的に考えると
配列が必ずしもArrayであるとは限らない
973Name_Not_Found:2013/10/07(月) 18:56:30.20 ID:???
TypeScriptでも使ったほうがいいな
974Name_Not_Found:2013/10/07(月) 19:08:26.31 ID:???
ダック・タイピング的にやるなら、こうすか?

function( arr ){
  if(arr != null && typeof arr === "object" && 'splice' in arr && 'join' in arr){
    console.log('良し');
  }
  else{
    throw('フジャッケンナ!フジャッケンナ!');
  }
}
975Name_Not_Found:2013/10/07(月) 19:20:19.72 ID:???
ダックタイピング&実用的にはArray.fromでパースするのがいい
lengthを持つあらゆるオブジェクトとイテレータブルオブジェクトを配列に変換できるすぐれもの
976Name_Not_Found:2013/10/07(月) 19:32:48.40 ID:???
見た目的でいいんなら悪い書き方だけどこう書くこともできるよ
function ( arr = Array ) { }
977Name_Not_Found:2013/10/07(月) 20:06:31.43 ID:???
もし部下がこんなコード書いてたら90分説教だわ
978Name_Not_Found:2013/10/07(月) 20:08:57.97 ID:???
>>977
また本質的には変わらないコード書いた上に
長い説教するのだけは勘弁して下さい
979Name_Not_Found:2013/10/07(月) 20:13:13.83 ID:???
>>976
これ引数指定し忘れたりundefinedだっらarrがArrayオブジェクトになるんだぞ
それでもいいんか?
980Name_Not_Found:2013/10/07(月) 20:40:40.44 ID:???
まずArrayかどうかを判断するのがもの凄く難しいからな……
Array.isArrayが使える環境なら問題ないんだけど
981Name_Not_Found:2013/10/07(月) 20:50:59.28 ID:???
だからこそのダックタイピング
982Name_Not_Found:2013/10/07(月) 21:14:31.13 ID:???
>>964
誰が「一般」を決めるんだよw
innerHTMLが速いのは大量のコードをDOMツリーに追加するような場合だよ
これも十分一般的な用途だが
983Name_Not_Found:2013/10/07(月) 21:15:58.18 ID:???
>>963
それはこっちの台詞だよw
最初は優しく教えてあげてるんだからそれで納得しろよ
君と関わってもこっちは何も得るところがないんだから
984Name_Not_Found:2013/10/07(月) 21:17:43.81 ID:???
まとめての場合でも50倍遅いって上のベンチで出ちゃってるじゃんwwww
嘘つきw
985Name_Not_Found:2013/10/07(月) 21:19:58.51 ID:???
しまった巨人様だ!
皆スルーして早く帰ってもらおう!
986Name_Not_Found:2013/10/07(月) 21:22:10.32 ID:???
>>827
この件ですが、pot.jsをヒントにして配列をインターバルにイテレートする処理を書いて
体感速度を大幅に上昇させることができました
ありがとうございました
987Name_Not_Found:2013/10/07(月) 21:24:08.45 ID:???
ポットンJSの話何回するんですかねえ……
988Name_Not_Found:2013/10/07(月) 21:26:59.11 ID:???
引篭り児童を更生させてあげるのも大人の役目
早く彼が良くなることを願って茶番に付きあおう
989Name_Not_Found:2013/10/07(月) 21:27:01.27 ID:???
http://jsperf.com/innerhtml-vs-createelement-test

これなんかはinnerHTMLの方がずっと速い
だからその時々でパフォーマンスを比較するのがいい
一つの方法に固執するのはC級プログラマーの特徴だよ
990Name_Not_Found:2013/10/07(月) 21:28:11.07 ID:???
こりゃ大層なツッコミ待ちだこと
991Name_Not_Found:2013/10/07(月) 21:29:30.45 ID:???
>>821
確かにお前さん言うとおり只者で無いことは分かった。
表に出ちゃいけない人間だよ、お前。
992Name_Not_Found:2013/10/07(月) 21:33:02.76 ID:???
流れが悪いと察するやいなや個人攻撃に切り替える人間の屑
屑だよあんた、屑、屑、屑、くず!1
993Name_Not_Found:2013/10/07(月) 21:34:05.15 ID:???
質問スレで議論うぜえな
994Name_Not_Found:2013/10/07(月) 21:35:02.43 ID:???
>>982-983はなり済ましです
>>959からここまで書き込んでいません
995Name_Not_Found:2013/10/07(月) 21:41:42.53 ID:???
すみませんでした
今ではむきになって言い過ぎたと反省しております
996Name_Not_Found:2013/10/07(月) 21:47:48.95 ID:???
反省は人を成長させる
997Name_Not_Found:2013/10/07(月) 21:48:15.72 ID:???
実際の使用方法は要素を空にするより追加や書き換えが主
>>953の比べ方こそ特殊
998Name_Not_Found:2013/10/07(月) 21:53:24.01 ID:???
富豪プログラミングしろよ
999Name_Not_Found:2013/10/07(月) 22:05:29.38 ID:???
999ならパフォーマンス厨昇天
1000Name_Not_Found:2013/10/07(月) 22:06:17.46 ID:???
1000ならパフォーマンス厨堕天
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。