「Scalaにおける細かい最適化のプラクティス」への反応

なんで自分でもこんな弁明的なことしてるのか、よくわからなくなってきた・・・
8
Kenji Yoshida @xuwei_k

書いた http://t.co/tqtwY2fFTs "Scalaにおける細かい最適化のプラクティス"

2013-07-09 09:47:07
Takuya Fujimura @tlync

正直面倒臭くてゆとり言語に逃げたくなる気持ちも分かる / “Scalaにおける細かい最適化のプラクティス - scalaとか・・・” http://t.co/nWNOscA0dH

2013-07-09 12:09:21
Kenji Yoshida @xuwei_k

https://t.co/OoDUfJSMsW 「Scala特有の、わかりにくい、あまり知られていない細かいもの」 を列挙しただけで、べつにこれ実行しなくても全然死ぬわけじゃないし、なんか勘違いされてるような・・・。そしてゆとり言語とは・・・

2013-07-09 12:15:17
erukiti @erukiti

というかScalaは造り込みが甘いとは思う。こんあしょうもない最適化を人間がするって十年前の言語かよ

2013-07-09 12:17:17
Takashi Miyamoto @tmiya_

Listは確かに要素を辿るのに時間かかるんだけど、あまり効率強調するとなんでもHashMap使う人が現れるからなぁ。。。整列可能なキーならTreeSet使って欲しいんだよな。なんでimmutableなデータ構造使いたがらないのかなぁ。。。

2013-07-09 12:24:45
Naruhiko Ogasawara @naru0ga

これ入り口眺めてるレベルのぼくには結構丁度いいレベルで面白い。#6 についてはこないだ同僚に教えてもらった / “Scalaにおける細かい最適化のプラクティス - scalaとか・・・” http://t.co/oJrJGV8dZE

2013-07-09 13:37:00
erukiti @erukiti

ボクはScalaのコードの最適化度合いを考えられるレベルには到達できてない底辺のウジ虫なので、まずはscalaでまともにテストをかけるところからスタートですかね

2013-07-09 13:38:46
kmizu @kmizu

これはScalaでプログラミングするとき常に意識しなきゃいけないものじゃなく、普段はここまで考えなくていいです。たとえば、private[this]は現在のJVMではあまり効果がないです。>tlyncさん / “Scalaにおける…” http://t.co/tRZdJ7cNER

2013-07-09 13:52:16
kmizu @kmizu

xuwei_i さんが最初に断りを入れている通り、これらの最適化が常に有効か(特に現在のOracle JVMにおいて)は微妙なところで、Scalaで常にこういった事を考慮しないといけないわけでもない。boxing/unboxingに関してはある程度意識した方がいいと思いますが。

2013-07-09 13:55:39
kmizu @kmizu

でも、Streamはメモリリークの温床になるのであんまし使わない方がってのはある。

2013-07-09 13:56:34
Takashi Miyamoto @tmiya_

@kmizu メモリリークするんですか?>Stream。まぁ極力Iterator使えというのは同意です。(一回実務で懲りました。)

2013-07-09 14:00:30
kmizu @kmizu

Streamでスレッドセーフにするためのコストとかはまあ普通、問題にならんと思うのだけど、うかつにStreamを使って、headへの参照を保持しちゃってあばばばというのはよく聞くので気をつけましょう、という。

2013-07-09 14:05:20
kmizu @kmizu

@tmiya_ 厳密に言うとメモリリークではないです。要はHaskellの無限リストと同じで、うっかり無限リストのheadへの参照を保持しちゃっていつまで経ってもメモリが解放されない、という現象が起きがちなことです。オブジェクトのフィールドとしてStreamを持つ時とか。

2013-07-09 14:07:23
kmizu @kmizu

もう一度言いますが、Scalaでこういった細かいチューニングを考えなければ速度が出ない、ということは無く、行き詰まったときにそういうチューニングが有効である(かもしれない)という話としてとらえるべきだと思います。

2013-07-09 14:11:38
kmizu @kmizu

* boxing/unboxingのコスト * データ構造の選択 この二つは慣れてきたら意識しといた方がいいかもしれないですががが。

2013-07-09 14:13:24
イトウ アスカ @itoasuka

例のScalaのチューニングのブログの記事をみて右往左往している人は、そんなことよりDBの設計見なおしたほうがいいわ。こんなことで右往左往するような人はきっと論理的な発想に乏しいだろうから、きっとアホみたいなDBの設計してると思うぞ。

2013-07-09 14:14:13
イトウ アスカ @itoasuka

あと、逃げ出した先のゆとり言語はたぶんそのままではScalaよりずっと遅い。

2013-07-09 14:14:52
Takashi Miyamoto @tmiya_

@kmizu それなら判ります。私もStreamのheadを保持して、というのを一度やって失敗したので実感してます。

2013-07-09 14:16:55
Kenji Yoshida @xuwei_k

タイトルにあえてつけた"細かい"というのも 「そんな細かいこと気にするより他にやるべきことある(けど、一応それぞれ違いがあるので思いつくだけ書いてみた)」 という皮肉的な意味が大きい

2013-07-09 14:29:22
shinanonozenji @shinanonozenji_

メソッド定義の代わりに関数オブジェクトをvalで保持のほうがすっきりしていい http://t.co/N5VyKsHuqc

2013-07-09 14:39:19
Takafumi Ikeda @ikeike443

初期のJavaっぽい雰囲気出てきた / “Scalaにおける細かい最適化のプラクティス - scalaとか・・・” http://t.co/P8rpZfYsSP

2013-07-09 22:47:18
Sotaro Kimura @kimutansk

10年近く前にJavaで似たようなことをせくせく学んだ記憶が。ともあれ、広まったからこそこういう話が出てくるわけですね。覚えておきましょう。 / “Scalaにおける細かい最適化のプラクティス - scalaとか・・・” http://t.co/ip71oFqgRY

2013-07-09 23:01:59
Shigeyuki Azuchi @techmedia_think

あー、toSeq()してるの多いかも‥ / Scalaにおける細かい最適化のプラクティス - scalaとか・・・ (id:xuwei / @xuwei_k) http://t.co/at1Ts1D1SL

2013-07-09 23:09:46
wm3 @wm3

List が案外使われる事と auto boxing 以外はとりあえずそれほど気にしなくて良さげ、パフォーマンスで気にする事は思ったより少なそうっていうのが正直な感想。 ー Scalaにおける細かい最適化のプラクティス http://t.co/i18Bs52df2

2013-07-09 23:29:45
Kenji Yoshida @xuwei_k

http://t.co/KXS98iJ6UE "こういうことを常に考えながら実装していたら、何をしているのか分からなくなりそう" とか、また勘違いブクマコメント・・・

2013-07-10 00:11:33