のくす牧場
コンテンツ
牧場内検索
カウンタ
総計:127,062,836人
昨日: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
    101 : Name_Not - 2014/08/08(金) 01:42:39.58 ID:???.net (-28,-26,-10)
    > JavaScriptにはGCがあり

    ほとんどの言語にGCがあるんだが?

    何言ってるんだろうねこいつw
    102 : Name_Not - 2014/08/08(金) 01:44:20.07 ID:???.net (+23,+29,-22)
    GCのタイミングは必ずしも定期的に行われる物では無く、実装による
    よってGCのせいにするのは馬鹿
    103 : Name_Not - 2014/08/08(金) 01:47:34.73 ID:???.net (+27,+28,+1)
    >>98
    そうですか
    ありがとうございました
    105 : Name_Not - 2014/08/08(金) 02:02:03.94 ID:???.net (+27,+29,-11)
    あほかこいつw
    俺がマシンを変えてもユーザーのマシンは変わらねーんだよ
    何の解決にもなってない
    106 : Name_Not - 2014/08/08(金) 02:11:25.29 ID:???.net (+22,+29,-5)
    どうせお前しか使ってないだろ
    108 : Name_Not - 2014/08/08(金) 02:57:22.51 ID:???.net (+27,+29,+0)
    type属性はもうつける意味が無いものになったよ。
    109 : Name_Not - 2014/08/08(金) 03:06:43.37 ID:???.net (-24,-30,-172)
    http://buildnewgames.com/garbage-collector-friendly-code/

    これを読んでいて、
    --enable-memory-info
    スイッチを付けて取得できるという属性を、スイッチを付けていないchromeで取得してみたら、
    なんと取得できました\(^o^)/

    console.log(window.performance.memory.totalJSHeapSize);
    console.log(window.performance.memory.usedJSHeapSize);

    今のバージョンではデフォルトでオンになってるみたいです
    こういう隠し機能は他にあるんですかね?
    110 : Name_Not - 2014/08/08(金) 03:13:22.77 ID:???.net (-26,-29,-47)
    http://developer.mozilla.org/en-US/docs/Web/API/Performance.now()

    performanceオブジェクトはchromeに限らないようです?
    こんなのはじめて知ったよ
    111 : Name_Not - 2014/08/08(金) 04:00:05.15 ID:???.net (+47,+29,-185)
    http://www.html5rocks.com/ja/tutorials/memory/effectivemanagement/

    新世代のガベージコレクションの実行時間は、10 ミリ秒のオーダーです。
    直感的に理解できると思いますが、アプリケーションがメモリアロケートを繰り返すと、
    いずれ 領域が枯渇してGCが発生します。特にゲーム開発者は注意してください。
    (60 fps を実現するために) 16ミリ秒のフレーム時間を保証するには、
    あなたのアプリケーションは一回たりともメモリをアロケートすることはできません。
    なぜなら、一回の新世代ガベージコレクションでフレーム時間のほとんどを使ってしまうからです。

    旧領域のメモリ領域でガベージコレクションが実行されると、
    必ず新世代のGCも実行されます。
    ひとたび処理が走ると、アプリケーションは秒のオーダーで実行が止まります。

    --
    速い方のGCですら10msオーダー
    遅い方は1sオーダー
    レスポンシビリティが重要なアプリではGCに気を遣うのは当然のようですね
    112 : Name_Not - 2014/08/08(金) 06:17:48.68 ID:???.net (-22,-29,-80)
    今まで要素にどんなイベントが登録されてるのかを
    jsのソースから検索してたんだけど
    例えば
    (1)要素のidがhoge (2)jsのソースから”hoge”を検索 (3)clickとかの記述がみつかる
    みたいな感じ
    もっとコンソールとかで要素クリックしたらハンドラ名とか見えたりする効率いい方法をおしえてください
    113 : Name_Not - 2014/08/08(金) 07:39:31.51 ID:???.net (+38,+30,-164)
    今まで処理の重さとして感じていたことの多くがGCだったんじゃないかと思えてきた
    ほとんどの処理に比べてGCはでかすぎる。
    10msオーダーの処理なんて滅多にないし。
    となると速度的なベンチマークではなく
    メモリアロケーションを基準にコードを決めなくてはいけなくてはいけないのではないだろうか
    関数呼び出しはパフォーマンスが悪いと言われるが、
    アロケーション基準ではどうか?
    ローカル変数を使うよりも関数を呼び出す方がいいこともあるのではないでしょうか
    114 : Name_Not - 2014/08/08(金) 07:52:55.26 ID:???.net (-27,-30,-93)
    関数の引数にオブジェクトを書くことがあります
    css({hoge:1,moge:2})
    みたいなやつです
    これを
    css(['hoge',1,'moge',2])
    のように配列で渡すことが出来たら使用メモリが減っていいんじゃないでしょうか?
    115 : Name_Not - 2014/08/08(金) 08:51:04.82 ID:???.net (+29,+29,-28)
    >>113
    その通りだ
    JSのゲームエンジンは如何にループ内でnewの類いをしないかが大事
    116 : Name_Not - 2014/08/08(金) 09:13:16.33 ID:???.net (-13,-21,+0)
    >>115
    普通にnewしてるってw
    117 : Name_Not - 2014/08/08(金) 11:53:04.58 ID:???.net (+31,+29,-77)
    >>116
    勿論ロード中とかはnewするがループ中はなるべくすべきじゃない
    ちなみにネイティブアプリは自分で解放をコントロール出来るから普通にnewもしてるだろう
    それでも限界までメモリを使う場合は問題になることもあるだろうが
    118 : Name_Not - 2014/08/08(金) 13:03:21.22 ID:???.net (+32,+29,-59)
    jQueryのプラグイン使ってドヤ顔してJavaScript使えた気になってるのも嫌なんで、
    jQueryのプラグインでよさげなやつを車輪の再発明でエミュレートしたろうと思ってます。
    よろしくお願いします。
    119 : Name_Not - 2014/08/08(金) 13:10:43.40 ID:???.net (+22,+29,+0)
    おう、こちらこそよろしく~
    123 : Name_Not - 2014/08/08(金) 17:44:10.00 ID:???.net (-9,-6,-12)
    jqueryの話ですが
    124 : Name_Not - 2014/08/08(金) 17:50:13.50 ID:???.net (+2,+0,-84)
    何度も使うarray.lengthをローカル変数に代入するというよくある高速化テクニックも
    メモリアロケートの観点からは、
    体感できないほどのコストのために余計なローカル変数を作ってゴミを増やしている
    と言えるかもしれませんね?
    125 : Name_Not - 2014/08/08(金) 18:01:31.47 ID:???.net (+16,+22,-31)
    >>123
    jQueryでもオブジェクトを生成する必要はないですけど
    126 : Name_Not - 2014/08/08(金) 18:22:08.62 ID:???.net (-24,-30,-19)
    >>125
    css({left:100, top:200})
    みたいなことを言っています
    127 : Name_Not - 2014/08/08(金) 20:02:02.44 ID:???.net (+27,+29,-30)
    数値型すらオブジェクトなんだから何やったってオブジェクト生成されることになるんじゃないのか
    128 : Name_Not - 2014/08/08(金) 21:36:40.42 ID:???.net (+18,+25,-15)
    オブジェクトはでかくて重い
    129 : Name_Not - 2014/08/08(金) 21:59:25.73 ID:???.net (+21,+23,-40)
    オブジェクトの参照も使い終わるとガベージになるのでしょうか?
    容量はかなり小さそうですが
    131 : Name_Not - 2014/08/08(金) 23:38:18.83 ID:???.net (+24,+29,-17)
    >>112
    lodashを使えばなんとかなるが現状その方法しかない
    132 : Name_Not - 2014/08/08(金) 23:38:34.64 ID:???.net (+22,+24,-8)
    は?意味はありますが?アホ?
    133 : Name_Not - 2014/08/08(金) 23:39:44.16 ID:???.net (+31,+29,-34)
    >>132
    そう言いたい気持ちはわかるけどさ、
    具体的な数値を出して言ってみ。

    オブジェクトを使わないことで
    何%上がったとかさ。
    135 : Name_Not - 2014/08/08(金) 23:41:20.60 ID:???.net (+25,+29,-28)
    ガベージを増やさないためにはいかにオブジェクトを生成しないかが鍵になる
    >>109を参照せよ
    136 : Name_Not - 2014/08/08(金) 23:44:02.12 ID:???.net (+31,+29,-33)
    まず、ガベージコレクションが増えても
    パフォーマンスに影響がないんだ。

    反論は、何%と具体的にいうこと。
    できなければ、深夜に裸で町を猛ダッシュすること。
    137 : Name_Not - 2014/08/08(金) 23:44:45.38 ID:???.net (+27,+29,-14)
    ガベージコレクションを減らそうとする努力によって、
    開発工数が500%増加した。納期に間に合わない!(笑)
    138 : Name_Not - 2014/08/08(金) 23:47:51.48 ID:???.net (+27,+29,-63)
    引数に関数を渡す関数言語的な方法って
    ローカル変数が生成されては廃棄されていくから
    ガベージがものすごい速度で溜まっていくのでは?
    139 : Name_Not - 2014/08/08(金) 23:48:48.14 ID:???.net (+33,+29,-14)
    >>136
    まだそんなこと言ってんのかw
    >>111を参照せよ
    140 : Name_Not - 2014/08/08(金) 23:48:54.89 ID:???.net (+27,+29,-36)
    具体的な数値がでてるのが反論だとすると
    反論はまだ出てないな。
    もう5分も待ったのに。
    141 : Name_Not - 2014/08/08(金) 23:50:05.27 ID:???.net (+27,+29,-10)
    もしくは、裸で街を猛ダッシュした証拠でもいいんだが。
    約束はちゃんと守ろう。
    142 : Name_Not - 2014/08/08(金) 23:51:55.08 ID:???.net (+22,+14,-16)
    具体的な数値が>>111に書いてあるので参照せよ
    143 : Name_Not - 2014/08/08(金) 23:54:15.65 ID:???.net (+31,+29,-25)
    >>142
    あんた何を作ろうとしているの?
    60fpsを出す必要があるゲーム以外には全く関係ないって
    言ってるようにしか見えないんだが?

    もしくは、裸で街を猛ダッシュしてもよい。
    144 : Name_Not - 2014/08/08(金) 23:56:04.11 ID:???.net (-29,-30,-306)
    http://uhyohyo.net/javascript/8_3.html

    このサイトの一番最後にあるサンプルを参考にして選択範囲にルビをふるプログラムを書いたのですが、選択した時だけでなくクリックするだけでマウスのある場所にルビをふってしまいます。
    サンプルではちゃんと選択時だけ起動しますし、サンプルにあるそれ用の対策(ifのところ)はちゃんと写してるのですが…。

    document.addEventListener('mouseup',function(ev){
    var selection = 0; // ここが初期化されてないのか?と思って何となく0を入れてみたが効果なし
    selection = getSelection();
    if(selection.rangeCount > 0){
    var range = selection.getRangeAt(0);

    var newruby = document.createElement('ruby');
    var newrt = document.createElement('rt');
    var newrubytext = "test" ; //とりあえず「test」固定
    var newrubytextnode = document.createTextNode(newrubytext);

    var df = range.extractContents();
    newrt.appendChild(newrubytextnode);
    newruby.appendChild(df);
    newruby.appendChild(newrt);
    range.insertNode(newruby);
    }
    },false);
    145 : Name_Not - 2014/08/08(金) 23:56:10.73 ID:???.net (+32,+29,-69)
    現在のCPUは速いので相当複雑な処理をさせても10msもかからない
    しかしGCは10msオーダー、1sオーダーという爆弾を平気で落として行くのだ
    JavaScriptプログラマーに必要なのは爪に火を灯すような高速化ではなく、
    なるべく爆弾が落ちないようにすること
    そいつはすべてを吹っ飛ばしていくほど強力なのだ
    146 : Name_Not - 2014/08/09(土) 00:04:07.82 ID:???.net (-11,-9,-68)
    > しかしGCは10msオーダー、1sオーダーという爆弾を平気で落として行くのだ

    GCの速度はCPUとメモリ速度に依存するから
    今だと1msもいかないだろうね。
    147 : Name_Not - 2014/08/09(土) 00:05:54.48 ID:???.net (+27,+29,-9)
    ガベージコレクションが起きて10msも処理に
    時間がかかるのは1時間に1回ぐらいだよ。
    148 : Name_Not - 2014/08/09(土) 00:09:08.35 ID:???.net (-24,-29,-61)
    最近のJavaのGCは、数ミリ秒毎に、小刻みにやるのだが

    >>115
    配列などのサイズが大きいものは、一々、new・削除しないで、
    ループの外に出した方がいいかも

    >>124
    8byteをケチッても仕方ない
    array.lengthを呼んだら、もっとnewしてるかも知れないし
    149 : Name_Not - 2014/08/09(土) 00:11:12.15 ID:???.net (+25,+29,-63)
    16msも遅延したらどうなるかわかってるの!

    その16msで生死が決まるんだよ。

    1フレームのレベルで戦っているんだからな。


    たとえ1フレームが1じかんに

    馬鹿のフリして核の秋田w
    150 : Name_Not - 2014/08/09(土) 01:06:10.77 ID:???.net (+32,+28,-14)
    「今だったら」って>>111はgoogle I/O 2013なんだがw
    妄想を語り出すやつなんなんだろうな
    C級プログラマーの思考回路は理解できんわ
    ←前へ 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 次へ→ / 要望・削除依頼は掲示板へ / 管理情報はtwitterで / JavaScript スレッド一覧へ
    スレッド評価: スレッド評価について
    みんなの評価 :
    タグ : 追加: タグについて ※前スレ・次スレは、スレ番号だけ登録。駄スレにはタグつけず、スレ評価を。荒らしタグにはタグで対抗せず、タグ減点を。

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


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