のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,898人
昨日:no data人
今日:
最近の注目
人気の最安値情報

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

    JavaScript覧 / PC版 /
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter

    151 = :

    >>149
    cloneNode使え

    153 = :

    >147
    俺も馬鹿げたコードだと思うが>124に対抗してるだけ

    >150
    これ以上短くするとTypeErrorになる

    155 = :

    それなら1個のTextのdataへの代入と比較するのが筋だろうよ
    HTMLタグ解析全然やってないんだからな

    比較条件が全然違うのを平気でやらかしてるのは、結局
    お前自身が普段どういうコードを書いてるかを晒してるに過ぎん

    156 = :

    var test1 = function(root, num) {
      var doc = document;
      var fragment = doc.createDocumentFragment();
      for (var i = 0; i < num; i++) {
        fragment.appendChild(doc.createTextNode(i));
      }
      root.appendChild(fragment);
      return root;
    };
    var test2 = function(root, num) {
      var innerHTML = root.innerHTML;
      for (var i = 0; i < num; i++) {
        innerHTML += i;
      }
      root.innerHTML = innerHTML;
      return root;
    };

    var num = 10000;
    var elm = document.body; // bodyに適当にHTML書いとく

    console.time(1);
    var r1 = test1(elm.cloneNode(true), num);
    console.timeEnd(1);

    console.time(2);
    var r2 = test2(elm.cloneNode(true), num);
    console.timeEnd(2);

    console.log(r1.innerHTML === r2.innerHTML); // 両者の結果が等しいことを確かめる

    157 = :

    くっそ
    おまえら俺をとことん馬鹿にしやがって
    今日のところは引き分けで許しといてやろう

     お! ぼ! え! と! け! よ!





    >151,152
    もう疲れた
    よかったら続きはおまえらがコード書いて俺に見せてくれ

    >155
    カッコつけんなよ爺さん
    俺よりクールなコードを書けるんなら口先だけじゃなくて書いて見せてみろよ

    158 = :

    >>149
    よくなった。>>156は全く同じ事を検証するコード。これで書き方勉強してみたら。

    159 = :

    157が一人前になるには何年かかるやら。。

    160 = :

    >>158
    うるせー中途半端に褒めるんじゃねーよ

    無駄になげえコード書くんじゃねえ見づらいだろうが
    コードは1文字でも短い方が良いんだよ
    パット一目見て頭に入るクールなコードを書くのが男ってもんよ

    161 = :

    >>156
    お前もさあ、DOM構造が全然違うってのに気付けよ

    162 = :

    >>161
    書き方勉強させるのに内容まで変えたら爆発しちゃうだろw同じであることが大切なんだよ。

    163 = :

    >>131を公平な条件で比較するとこうなる
    http://jsperf.com/innerhtml-appendchild
    innerHTMLはあまりに遅くてGoogle Chromeが落ちたけどw

    164 = :

    こりゃなんか俺のせいで荒れてきちまったな

    すまん!みんな許してくれ

    そして俺はいくら弄ってもいいから俺に免じてみんな仲良くしてくれ!

    頼む!!!

    165 = :

    >>163
    >>131は「一つ一つDOMで追加していく」と「innerHTMLに追加していく」を比べるんじゃないのか。
    目的だけ見てしまってその過程を最適化したらテストにならないと思う。

    166 = :

    >>164
    だったら詫びとして次のお題を出せ!
    お前の本気はこんなもんじゃないだろ!

    167 = :

    >>165
    >>122,124に対するレスだからinnerHTMLとappendChildを比較していると読んだが、違うのか
    一方だけループ中の処理にすれば遅くなるのは当たり前すぎる

    168 = :

    >>165
    ならinnerHTMLもループ中に追加しなければならん
    かつテキストノードを分割するようにな
    比較条件が全然違うのにテストとかアホか

    169 = :

    俺は>124を懲らしめたかっただけなのに
    逆にみんなから懲らしめられるとは……

    170 = :

    まとめると、innerHTMLは極端に遅くなるようにも書けるし、(条件次第で)DOMより速くなるようにも書ける。
    使うケースと書き方次第で結果が全然違うから、一般的にどっちが速いとはいえない。

    172 = :

    >>168
    そのことを>>163に対して言ってるんだが?最初の目的を失ってるんじゃないかなと。

    173 = :

    >>165
    それならこういう比較になるべきじゃないの

    for (var i=0; i < 10000; i++) { d.body.innerHTML += i; } // 逐次処理

    for (var i=0; i < 10000; i++) { bi += i; }
    d.body.innerHTML += bi; // innerHTMLで一括処理

    一括処理だけinnerHTMLにして逐次処理はappendChildにするテストに意味がない

    174 = :

    >>172
    最初の目的は>>122でしょ
    innerHTMLとDOM(appendChild含む)のパフォーマンス比較
    >>131はループ中のappendChildとループ後のinnerHTMLを比較しているから無意味
    公平に比較するなら「ループ中のappendChildとループ中のinnerHTML」か>>163の形

    175 = :

    APIの機能差をテストするつもりで
    プログラマの能力差をテストしているという罠

    177 = :

    まとめ。(innerHTML2はとてつもなく遅い為にテストできず)
    http://jsfiddle.net/DsR7g/

    178 = :

    >>169
    >>124は何も間違ったことはいってないぞ
    喧嘩するなら余所でやってくれ

    179 = :

    >>177
    順番を入れ替えるだけで結果が変わるよ…
    マジでプログラマーの能力測るのにちょうどいい話題だな

    180 = :

    お昼寝して起きたらなんか進んでてワロタw

    ごめんごめん、俺はinnnerHTMLとappendの違いを説明したかっただけや

    182 = :

    >180
    俺こそ一人で騒いですまんかった
    innerHTMLが冒涜されたと勝手に思って
    過去のトラウマを思い出してつい切れてしまった

    すまんかった…

    183 = :

    すいません

    <div>
    <div class="a10"></div>
    <div class="a5"></div>
    <div class="a2"></div>
    <div class="a9"></div>
    <div class="a1"></div>
    <div class="a8"></div>
    <div class="a4"></div>
    <div class="a3"></div>
    <div class="a7"></div>
    <div class="a6"></div>
    </div>

    このように並んである要素をソートしてa1~a10に整列させる良い方法を伝授してください

    184 = :

    >>183
    document.querySelector('.a1'); から順番に appendChild していく
    他に class="a1" があったら破綻するから工夫して

    185 = :

    試してないけどこんな感じ
    BIGDIV.childNodes.sort(function (a,b){
    return b.firstChild.className.match(/\d/)-a.firstChild.className.match(/\d/);
    })

    186 = :

    >>184 sort使ってやれよ

    188 = :

    >>186
    指摘するぐらいなら書いてやれよ

    189 = :

    Node-Listを直接ソートするって大胆すぎ

    var div = $("div:first"); // <div> jQuery

    var inner = Array.prototype.slice.call(div[0].childNodes); // <div.a1>....<adiv.aN>
    inner.sort(function(a, b) {
        return b.className.replace(/[^\d]/,"") - a.className.replace(/[^\d]/,"");
    });
    for(var i = 0; i < inner.length; i++) {
       div.append(inner[i]);
    }

    190 = :

    >>184
    それが一番いいと思いますがそれができないのです

    191 = :

    NodeListは配列と違って破壊的でないのにsort使う意味あるのかな
    効率が悪すぎると思うが

    >>190
    なぜ出来ないのか考えてから質問して欲しい
    あと出来ないコードをjsfiddleにUP

    192 = :

    出来ないのはそういう風に利用するAPIが吐くから質問させていただきました

    193 = :

    お前らほんとーにおっせーコードしか書けんのなあ

    194 = :

    >>192
    制限があるならその制限事項を全て出して
    あとjsfiddleにUP

    195 = :

    >>183に書いた要素をソートしたいだけで別の方法を模索したいわけではないのですよ

    196 = :

    >>193
    そう思うなら速いコードを書いてやれよ

    197 = :

    >>183
    classということは他にもclass="a1"があるんだよね
    この状況でどうやって要素を特定しようとしてる?
    親要素にidでも振ってあるなら話はわかるけどスマートな方法は今のところない
    あと、APIが吐くじゃあどのような制限があるか全く伝わらない

    198 = :

    「遅いはずだ」とか、「メモリリークするかも」とかって実際に起きてるわけでもなく、想像で話すとロクなことにならない。
    体感的に遅かったら高速化すればいいし、メモリリークしたら直せば良い。
    想像で議論してもまともな結論がでるはずもなく、無駄でしかない。他にやることがあるだろ。
    あと、(不毛な)議論自体がしたいヤツがいるから、そういうのはスルーするしかないね。

    199 = :

    >>189

    childNode だとテキストノードもまじってくる。それの対処を。
    あと、IEだとArray.prototype.slice.call(Nodeリスト)がつかえないんだよね。
    jQueryつかってるんだから、$.makeArrayがいいとおもう。IE無視ならそのままでOK。

    んで、それ直したらいけたよ。
    まあ、逆順になったけどな。

    200 = :

    サンプル書いてみた
    http://jsfiddle.net/SC3Bx/

    >>198
    「sortの効率が悪い」といったのは最終的にappendChildするなら二度手間になると思ったから
    >>186が「sort使ってやれよ」と指摘した理由が見つけられなかった
    どのような書き方をするかは各々の自由だと思うし、「~してやれよ」系はスルーでいいのかもしれないな


    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

    類似してるかもしれないスレッド


    トップメニューへ / →のくす牧場書庫について