のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,481,650人
昨日: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,-34)
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 (+1,+3,-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 (+31,+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,-145)
・インターバルで関数を呼び出し続ける
・その関数は内部で巨大なオブジェクトを作る
・一方は作成後破棄し、一方は保持し続ける

この二つを比較したら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,-270)
>>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 (+25,+26,-2)
>>280
関数を入れ子にするならクロージャが発生するだろ
283 : Name_Not - 2014/08/09(土) 23:50:54.38 ID:???.net (+24,+14,-17)
>>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,+22,+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 (-17,-15,-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 スレッド一覧へ
スレッド評価: スレッド評価について
みんなの評価 :
タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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