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

    私的良スレ書庫

    不明な単語は2ch用語を / 要望・削除依頼は掲示板へ。不適切な画像報告もこちらへどうぞ。 / 管理情報はtwitter
    ログインするとレス評価できます。 登録ユーザには一部の画像が表示されますので、問題のある画像や記述を含むレスに「禁」ボタンを押してください。

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

    JavaScript スレッド一覧へ / JavaScript とは? / 携帯版 / dat(gz)で取得 / トップメニュー
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。
    レスフィルター : (試験中)
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitter
    251 : Name_Not - 2014/08/09(土) 22:22:35.41 ID:???.net (+39,+29,-116)
    >>249
    その場合もスコープから抜けるのがGCのトリガーであってオブジェクト生成がトリガーになってないだろう
    そして、オブジェクトに限らず、プリミティブ値でも同様の問題は起きる
    >>250
    ボトルネックとなる部分から手を入れるのは当然の事だろう
    例えば、>>230でGCよりもjQueryを止める方が効果的な事がわかる
    252 : Name_Not - 2014/08/09(土) 22:32:26.55 ID:???.net (+30,+28,-33)
    jqueryもキャッシュすればほとんど問題ないよ
    オブジェクトを使い捨てにするのがまずい
    253 : Name_Not - 2014/08/09(土) 22:35:04.38 ID:???.net (+30,+29,-54)
    jqueryには端末間の差違を吸収するという役割があるんだから
    使うのをやめるという発想はナンセンス
    オブジェクトをキャッシュするだけで全然変わるんだから単にそうすればいいだけ
    254 : Name_Not - 2014/08/09(土) 22:39:22.07 ID:???.net (+32,+24,-16)
    >>252-253
    では、問題ないと分かる比較コードを上げてみて
    255 : Name_Not - 2014/08/09(土) 22:41:41.30 ID:???.net (+17,+23,+1)
    >>154
    出来ました
    ありがとうございます
    257 : Name_Not - 2014/08/09(土) 22:46:04.63 ID:???.net (+38,+29,-25)
    >>254
    何のためにだよw
    比較コードってのはどうなるか分からないことを確かめるために書くんだよ
    分かりきってるんだから意味ねーわ
    258 : Name_Not - 2014/08/09(土) 22:46:32.96 ID:???.net (+2,+4,-30)
    オブジェクトを作った時に遅くなるのは
    オブジェクトを作るコストであって、
    GCは関係ないだろw
    259 : Name_Not - 2014/08/09(土) 22:47:49.66 ID:???.net (+37,+29,-83)
    >>253
    > jqueryには端末間の差違を吸収するという役割があるんだから
    そんなのjQueryの役割のうち
    ごく小さい部分でしか無いよ。

    jQueryの凄さは要素をリストに置き換えて
    リスト処理できるようにしたところにある。
    262 : Name_Not - 2014/08/09(土) 22:54:34.55 ID:???.net (-16,-30,-116)
    ちなみにどういうコードかというと、

    GCあり
    1. オブジェクトを200000個作成して配列に入れる
    2. 開始時刻を記録
    3. 配列にnullを代入
    4. 終了時刻を記録
    5. 終了時刻と開始時刻の差を表示


    GCなし
    1. オブジェクトを200000個作成して配列に入れる
    2. 開始時刻を記録
    3. 終了時刻を記録
    4. 終了時刻と開始時刻の差を表示

    この差。
    263 : Name_Not - 2014/08/09(土) 22:56:50.80 ID:???.net (+30,+29,-21)
    >>262
    アホか。オブジェクトを作成する前に、
    開始時刻を記録しないと意味ねーだろ
    264 : Name_Not - 2014/08/09(土) 22:58:39.77 ID:???.net (+30,+29,-23)
    >>262
    GCが起きるタイミングはコントロールできないので
    そのテストには意味がない
    265 : Name_Not - 2014/08/09(土) 22:59:40.01 ID:???.net (+32,+29,-48)
    >>263
    ん? やってもいいけど、オブジェクトを作成するのは
    どちらも同じなんだから関係ないのでは?

    遅い遅い、GCのせいだ!っていうけどさ、
    それオブジェクトを作成する時間じゃねーの?
    266 : Name_Not - 2014/08/09(土) 23:00:30.88 ID:???.net (+32,+29,-10)
    >>264
    少なくとも一回は起きてるだろ?
    何言ってるんだ?
    267 : Name_Not - 2014/08/09(土) 23:02:24.01 ID:???.net (+27,+29,-8)
    たった一回GCが起きたからって違いなんて
    計測できるわけじゃないんw
    268 : Name_Not - 2014/08/09(土) 23:03:12.64 ID:???.net (+27,+29,-10)
    だよなぁ。GCのコストなんてごく僅かなのに
    何を気にしてるんだろう?

    それよりももっと気にするべき所があるだろ。
    269 : Name_Not - 2014/08/09(土) 23:06:14.00 ID:???.net (+32,+29,-137)
    ・インターバルで関数を呼び出し続ける
    ・その関数は内部で巨大なオブジェクトを作る
    ・一方は作成後破棄し、一方は保持し続ける

    この二つを比較したらGCによる遅延を確認できるんじゃね
    というか、googleのS級技術者が速くても10msオーダー、
    遅い時には1sオーダー処理が停止するって言ってんのに
    何を根拠にそれに疑問を持つんだ??
    俺の体感でもそのくらいだなって思うし、
    D級プログラマーの疑問のポイントが理解できんわ
    270 : Name_Not - 2014/08/09(土) 23:14:22.01 ID:???.net (+28,+29,+0)
    >>260
    >>230を見てからものをいえ
    271 : Name_Not - 2014/08/09(土) 23:15:46.20 ID:???.net (+32,+29,-5)
    いや書いてることがもうD級まるだしなんで、見るまでもないです
    272 : Name_Not - 2014/08/09(土) 23:17:17.27 ID:???.net (+38,+29,-60)
    >>257
    おまえの自説の正しさを証明するために決まってるだろ
    無根拠にjQueryは問題ないといわれても信用できんわ
    わかりきった話で言えば、jQueryの方がコストが高いことはわかりきってるんだからテストする必要はないがな
    273 : Name_Not - 2014/08/09(土) 23:23:37.11 ID:???.net (+32,+29,-63)
    google I/Oのレポートを読んで、
    B級以上のプログラマーは
    「GCをなるべく起こさないコードを書くにはどうしたらいいのか」
    っていう生産的な議論を始めるものだが
    C級以下のプログラマーは
    「GCなんてたいしたことない!そもそも起こらない!1%!」
    とか言い出すから本当にどうしようもない
    274 : Name_Not - 2014/08/09(土) 23:25:09.20 ID:???.net (+30,+28,-20)
    >>271
    おまえがD級だよ
    jQueryのコストがGCよりも低いという明確な根拠を出せ
    275 : Name_Not - 2014/08/09(土) 23:29:34.14 ID:???.net (+27,+29,-14)
    まだやってんの?w
    俺が最初にネタでGCいいだしたんだけど
    一体何時間無駄な時間費やしてるの?
    276 : Name_Not - 2014/08/09(土) 23:33:39.14 ID:???.net (+48,+30,-82)
    http://www.html5rocks.com/ja/tutorials/memory/effectivemanagement/
    読んだが、当たり前の事しかないてないぞ
    ・キャッシュは最小限にする(無駄な部分はGCで開放しておく)
    ・メモリリークは起こさない(同上)
    ・メモリアロケートを最小限にする(何度も呼ばれるデータはキャッシュしておく)

    無条件にGCが悪だとはどこにも書いてない
    ケースバイケースでGCを有効活用しようってことだろ
    >>234-235あたりが的を射ている意見だと思うがな
    これを読んで「GCを出来るだけ発生させないように」と結論するのは「木を見て森を見ず」だろ
    277 : Name_Not - 2014/08/09(土) 23:37:21.13 ID:???.net (+25,+29,-51)
    いえ、GCが起きてるんだからそれにより
    パフォーマンスは激落ちします。

    だからオブジェクトを作ってはいけません。
    すべて関数でやるべきです。
    279 : 276 - 2014/08/09(土) 23:42:40.89 ID:???.net (+38,+29,-114)
    > ・メモリリークは起こさない(同上)
    文脈をよめばわかるが、これはブラウザのバグによるメモリリークに限定されず、プログラマが意図せずリークさせる場合を含む
    >>234のいうように関数言語的コードで起きやすい(jQuery, lodash信者辺りが好んで使うようだが)
    スコープチェーンが分かってる人なら出来るだけ関数をネストさせないように気をつけるものだが、関数言語的コードでは延々と関数をネストさせるからな
    280 : Name_Not - 2014/08/09(土) 23:44:41.88 ID:???.net (-19,-27,-32)
    > >>234のいうように関数言語的コードで起きやすい

    逆じゃね? 関数を使う=ローカル変数を主に使うから
    メモリリークは起きないよ。
    281 : Name_Not - 2014/08/09(土) 23:47:42.22 ID:???.net (-23,-29,-258)
    >>277
    Gmailのメモリ肥大化問題をなぜ無視する?
    ↓を読んだら?
    http://www.html5rocks.com/ja/tutorials/memory/effectivemanagement/#toc-call-to-action

    ----
    1. あなたのアプリケーションはどのくらいメモリを使用しますか?

    あなたのアプリケーションはメモリを使いすぎている可能性があります。
    よく誤解されていることですが、多すぎるメモリはアプリケーションの全体のパフォーマンスに悪い影響を及ぼします。
    正確な数値を知ることは難しいですが、過剰なページキャッシュがパフォーマンスに影響を及ぼしていないか検証してください。

    2. あなたのページにリークはありませんか?

    あなたのページでメモリリークが発生すると、あなたのページのパフォーマンスだけではなく、他のタブにも影響を及ぼす可能性があります。
    Object Tracker を使ってリークの原因を特定してください。
    ----
    282 : Name_Not - 2014/08/09(土) 23:48:41.31 ID:???.net (+26,+26,-2)
    >>280
    関数を入れ子にするならクロージャが発生するだろ
    283 : Name_Not - 2014/08/09(土) 23:50:54.38 ID:???.net (+25,+15,-16)
    >>282
    たとえばこれとかネイティブなJavaScriptですが、クロージャー発生しますよ。
    http://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach
    284 : Name_Not - 2014/08/09(土) 23:53:18.34 ID:???.net (+32,+29,-55)
    やっぱりクロージャーよりも、Javaのラムダの方がすぐれてるってわけね。
    クロージャーだと循環参照が生まれやすいが、
    ラムダは、関数の中から関数の外を参照できないから
    循環参照は生まれにくい。
    クロージャーは諸悪の根源である。
    285 : Name_Not - 2014/08/09(土) 23:57:48.91 ID:???.net (+19,+23,+0)
    >>283
    だから何?
    286 : Name_Not - 2014/08/09(土) 23:59:20.93 ID:???.net (+27,+29,-33)
    書き方の問題なんだからネイティブでも問題が発生するのは当然
    関数言語的コードでそういう問題が起きやすいといわれているだけ
    関数を使わない選択肢を取れないからね
    287 : Name_Not - 2014/08/10(日) 00:04:22.07 ID:???.net (+27,+29,-11)
    ここではっきり言っておこう。

    C言語は関数型言語である。
    なぜならば、関数を使うからである。
    291 : Name_Not - 2014/08/10(日) 00:52:10.45 ID:???.net (+24,+26,-22)
    普通のJSではアクセスできないオブジェクトを使ってるっぽいから出来ないみたいだ
    まぁ当たり前か。。
    292 : Name_Not - 2014/08/10(日) 01:41:13.03 ID:???.net (+22,+29,-45)
    jQueryはメモリリークを起こす
    なぜならクロージャーを使うからだ。

    っていうのなら、クロージャーを使わないで
    ボタンのクリックのイベントハンドラを書いてみたら?
    293 : Name_Not - 2014/08/10(日) 01:41:59.48 ID:???.net (-28,-30,-30)
    >>292

    <button onclick="foo()">

    ここまでやらないとムリだろうねw
    294 : Name_Not - 2014/08/10(日) 02:30:10.47 ID:???.net (-27,-30,-164)
    var dom = document.getElementById('test');

    function test(e){
    dom.style.left = e.pageX+'px';
    dom.style.top = e.pageY+'px';
    };

    document.addEventListener('mousemove',test);

    jqueryを使わないこんな最小限のコードでも
    ドラッグ時のカクつき現象起きるね
    これはもうどうしようもないのか・・
    295 : Name_Not - 2014/08/10(日) 02:38:27.18 ID:???.net (+33,+30,-84)
    今大変なことに気付いたぜ
    「fireworksでベクタ図形を描いてドラッグしてクルクルずっと回していたらカクついた」
    つまりブラウザ固有の問題ではないということ・・
    催眠術だとか超スピードだとか
    そんなチャチなもんじゃ断じてねえぜ
    トラックパッドのドライバの問題なのか、なんなのかしらんけど・・
    297 : Name_Not - 2014/08/10(日) 03:26:51.98 ID:???.net (-16,-14,-2)
    すべての原因はGCになります。
    どんなこともGCで説明できます。
    298 : Name_Not - 2014/08/10(日) 03:32:49.98 ID:???.net (+41,+29,-77)
    >>62の件ですが、
    普段はbootcampのwin7使っているのですが、
    OSXにしたらカク付きませんでした・・。
    まさか本当にカク付くのが自分だけとは思いもしませんでした
    結果的にGCに詳しくなったという副産物はありましたが
    かくつかないという書き込みをはなから信じずに暴言をはいたりしてしまい
    すみませんでした
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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