- ベストアンサー
JavaScriptの動作を改善する方法とは?
- JavaScriptの動作が重くてデータ入力が非常に効率が悪いという問題があります。同僚はJavaScriptのキャッシュが原因だと考えていますが、改善方法がわかりません。
- カスタマイズされているCMSのデータ入力処理はJavaScriptで行われており、確定ボタンを押すとリクエストするURLが変わり、データがDBに反映されます。DBはオラクルで、XMLも関連しているそうです。
- 同僚は時間の制約があるため、大規模な改造はできません。そこで、対処療法的な改善方法を探しています。Ajaxで定期的に自動保存するか、JavaScriptのキャッシュを破棄する方法が考えられますが、工数やキャッシュのクリアの可否についてはわかりません。また、JavaScriptの動作を圧縮する方法も知りたいです。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
> これを使ってカスタマイズするといのは、工数が結構かかるものなんでしょうか? 完全にケースバイケース。基本は地道にやるしかない。 (特効薬的な物があるのかどうかだってケースバイケースなんだから。) ただ、プログラムの中身をよく知っている人がやった方が早いとは思います。 プロファイラは遅い関数を教えてくれるかもしれないけど、 どう直せばいいかまでは教えてくれませんから。 JavaScriptの一般的な性能向上について知りたいなら 「ハイパフォーマンスJavaScript」という本でも読んでみてはどうかと思います。 特定のプログラム固有の問題について直接の解決策を示してくれるようなものでは無いですが、 まあ知っていて損はないことは書いてあるかと。 > 感覚的でかまわないので工数はどのくらいかかりますか? 私はそちらのプログラムの規模さえ知りません。 > また、何%くらい動作が軽くなりますか?(JSの中身次第だとは思いますが) ケースバイケース。 アルゴリズムの選定間違えてたとか酷いミスがあったら桁違いに早くできることもあるし、 (言い換えると桁違いに遅くなるような物書く人がいるって事なんだけど・・・) 既に改善の余地がほとんど無ければ数%しか早くならなかったり。 > あと個人的な興味なのですが、この「JSのプロファイラ」というのは世間的によく使われているのでしょうか? JavaScriptというか、プログラミングやってて性能改善しようとしてるなら普通は使うものじゃない? > おすすめの、JST用プロファイラというのはどれでしょうか? 普段はFirefoxでFirebug付属のプロファイラ使ってます。 IEだったら、最近のIEなら標準で開発者ツールにプロファイラ付いてるはず。
その他の回答 (1)
- Gotthold
- ベストアンサー率47% (396/832)
まずはプロファイラを使ってどこに時間がかかっているのか調べましょう。 勘で「ここが遅いはず」じゃそれが正しいかどうかさえ分かりません。 遅い場所を見つけたら地道に改善してください。 > また、JSのコードは理屈上同じでも、JSの動作を圧縮する ファイルサイズが小さくなるだけで、動作が軽くなるのとは違います。 ロード時間が短くなるなどメリットはあるのでできるならやった方が良いですが。 > ご存知でしたら、お教えください。 Googleで「JavaScript 圧縮」で検索したら出てきました。
補足
ご回答ありがとうございます。、 で、プロファイラというのをはじめて知ったので、 Googleで 「("プロファイラ" OR "profiler" ) javascript ("internet explorer" OR IE OR "インターネットエクスプローラ")」 で検索したのですが(CMSはIE8にしか対応してないため) ※ ↓検索結果↓ https://www.google.co.jp/#sclient=psy-ab&hl=ja&source=hp&q=%28%22%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%A9%22+OR+%22profiler%22+%29+javascript+%28%22internet+explorer%22+OR+IE+OR+%22%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%22%29&oq=%28%22%E3%83%97%E3%83%AD%E3%83%95%E3%82%A1%E3%82%A4%E3%83%A9%22+OR+%22profiler%22+%29+javascript+%28%22internet+explorer%22+OR+IE+OR+%22%E3%82%A4%E3%83%B3%E3%82%BF%E3%83%BC%E3%83%8D%E3%83%83%E3%83%88%E3%82%A8%E3%82%AF%E3%82%B9%E3%83%97%E3%83%AD%E3%83%BC%E3%83%A9%22%29&aq=f&aqi=&aql=&gs_sm=3&gs_upl=10854l85850l1l86846l54l54l8l0l0l0l108l2972l45.1l46l0&gs_l=serp.3...10854l85850l1l86847l54l54l8l0l0l0l108l2972l45j1l46l0&psj=1&bav=on.2,or.r_gc.r_pw.r_cp.,cf.osb&fp=c45acc9488e32671&biw=1467&bih=556 これを使ってカスタマイズするといのは、工数が結構かかるものなんでしょうか? ※CMSカスタマイズのために同僚が書いているJSについて、 自分は中身をよく見てない(というか見てもわからない)ので、客観的に 「工数がこのくらい」とはいえませんが、 感覚的でかまわないので工数はどのくらいかかりますか? また、何%くらい動作が軽くなりますか?(JSの中身次第だとは思いますが) //----------------------------------------------------------- あと個人的な興味なのですが、この「JSのプロファイラ」というのは世間的によく使われているのでしょうか? //----------------------------------------------------------- まあ、同僚に「JSのプロファイラ使ってみては?」と言ってみればすむはなしかもしれないですが、同僚も「プロファイラ」に詳しくないかも。 おすすめの、JST用プロファイラというのはどれでしょうか? //----------------------------------------------------------- 以上、私自身の個人的関心もあって、質問攻めにしてしまいましたが、 部分的でもかまわないので、さらなるご回答をいただけたら幸いです。 以上、よろしくお願い申し上げます。