NetBSD 7.0リリース 52
ストーリー by headless
最新 部門より
最新 部門より
KAMUI 曰く、
NetBSDの最新版で、15回目のメジャーリリースとなるNetBSD 7.0がリリースされている(アナウンス、 OSDN Magazineの記事、 マイナビニュースの記事)。
目立つ機能追加としてはLuaカーネルスクリプティング機能によるカーネルモジュール開発や、sshなどネットワークデーモンに対して動的に侵入から保護するblacklistdの追加。利用者が直接触れる部分としてはLinux 3.15からポートされたDRM/KMSの導入によってx86システム上でIntel/Radeonでの描画が高速化されている。また、ARMについてはRaspberry Pi 2など各種ARMボードへのサポート追加、マルチプロセッサ対応などが挙げられる。その他の詳細は上記アナウンスを参照されたい。
Luaって結構聞くけど (スコア:0)
そんなにいいの?
Re:Luaって結構聞くけど (スコア:2, 参考になる)
良い悪いではなく、フットプリントが小さいのと全てCで書かれているので、このような組み込み用途に
ぴったりなんです。
Re: (スコア:0)
JITが超優秀で実行速度がむちゃくちゃ速いって聞くけど使ったことはないので伝聞止まり
Re: (スコア:0)
例えば、1から1000000000までの合計を求める
このコードが、3770Kでも1秒以下で計算されちゃうとそりゃね。
LuaJITじゃなくて、素のLuaの方ですら8秒とかだもの。
C/C++のようなネイティブはともかく、JavaやGo、すごいよHaskellですら単純計算では相手になりませんわ。
ちな、クソ遅いことで有名なRubyで同じことやってみ?
どう書いても3分とかかかるよwww
Re:Luaって結構聞くけど (スコア:2, 興味深い)
pythonで同じ事をやってみようといつものように何も考えずに
for i in range(1000000000):
とやってまず無事に死亡
リスト返すんだからそうなるわなとwhileに書き直して
$ time python a.py
500000000500000000
real 4m24.534s
みんな大好きpypyだと
$ time pypy a.py
500000000500000000
real 0m3.112s
luaと同じ条件にするために浮動小数点で
$ time pypy a.py
5.00000000067e+17
real 0m7.909s
参考までに同じ環境で
$ time lua -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
5.0000000006711e+17
real 0m12.698s
$ time luajit -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
5.0000000006711e+17
real 0m1.091s
Luaはやいですね
Re:Luaって結構聞くけど (スコア:1)
追加
言われるほどruby遅くなかった
$ time ruby a.ruby
500000000500000000
real 0m36.841s
user 0m36.351s
sys 0m0.189s
$ ruby -v
ruby 2.0.0p645 (2015-04-13 revision 50299) [universal.x86_64-darwin15]
Re:Luaって結構聞くけど (スコア:1)
手元の lua でやってみた。(3770Kじゃないけど)
$ time lua -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
500000000500000000
lua -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)' 30.09s user 0.02s system 99% cpu 30.207 total
$ lua -v
Lua 5.3.0 Copyright (C) 1994-2015 Lua.org, PUC-Rio
Re:Luaって結構聞くけど (スコア:2, 興味深い)
えーそんなに遅くなるのかあと思ってうちの Celeron 1037U 1.8GHzで試してみた。
lua-5.3.1 を MinGW-W64-builds-4.2.0 でビルド後、
$ time lua -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
500000000500000000
real 0m18.358s
user 0m0.000s
sys 0m0.015s
まあ、こんなもんか。
Re:Luaって結構聞くけど (スコア:1)
古いラップトップでこれだから最近のデスクトップなら8秒は余裕で切るだろうね
Ubuntu 15.04
Intel(R) Core(TM)2 Duo CPU P8800 @ 2.66GHz
$ time lua -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
5.0000000006711e+17
real 0m12.058s
user 0m12.026s
sys 0m0.000s
Re:Luaって結構聞くけど (スコア:1)
Debian GNU/Linux 8
Intel(R) Core(TM) i3-2120T CPU @ 2.60GHz
$ time lua -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
5.0000000006711e+17
real 0m14.021s
user 0m14.020s
sys 0m0.000s
Core2Duoに負けてる…
Re:Luaって結構聞くけど (スコア:2)
>Core2Duoに負けてる…
そう決め付ける物でもない。
CYGWIN_NT-6.0 mamiko 1.7.28(0.271/5/3) 2014-02-09 21:06 i686 Cygwin
Intel(R) Core(TM)2 Duo CPU T9300 @ 2.50GHz 2.50GHz
$ lua -v
Lua 5.1.5 Copyright (C) 1994-2012 Lua.org, PUC-Rio
$ time lua -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
5.0000000006711e+17
real 0m29.656s
user 0m27.986s
sys 0m0.265s
$
ほらちゃんとわたしの環境より性能で勝っている。
Re: (スコア:0)
Cygwin上のLuaJITとLuaで確認してみたが何でか結果が違う。
$ luajit -v
LuaJIT 2.0.4 -- Copyright (C) 2005-2015 Mike Pall. http://luajit.org/ [luajit.org]
$ time luajit -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
5.0000000006711e+17
real 0m1.982s
user 0m1.513s
sys 0m0.015s
$ lua -v
Lua 5.2.4 Copyright (C) 1994-2015 Lua.org, PUC-Rio
$ time lua -e 'local x=0; for i=1,1e9 do x=x+i end; print(x)'
5.0000000006711e+17
real 0m22.038s
user 0m19.312s
sys 0m0.046s
$
Luaは知らんが (1+1e9)/2*1e9 = 5.000000005e17 になると思
Re: (スコア:0)
< と > 逆にしてたわ。
1 #include <stdio.h>
2 main()
3 {
4 double x = 0;
5 double i;
Re: (スコア:0)
> 浮動小数点演算で丸めが発生する値の範囲ではないと思うんだが
訂正:
5.000000005e17なら2進数で59bit要るからIEEE 754の倍精度では足らんな。
Re: (スコア:0)
別ツリーに書いてたけどLua 5.3は64bit整数を導入したからでしょ。しかも1e9とか書く(丸めの可能性を気にもかけない)アホでも正しく計算できるように自動的に適切な内部型を選んでいるようだ(実行結果を見る限り)。むしろGCCでなんで誤差が出ないのか謎だ
Re: (スコア:0)
x87が80bitだからだろ。
Re: (スコア:0)
x86でもdoubleは64bitでlong doubleでないと80bitにはならなかったと思うが。最適化の結果最終段の出力以外は全部レジスタ上で行われるので80bitの精度が得られてしまうってこと?
Re:Luaって結構聞くけど (スコア:1)
最適化の結果最終段の出力以外は全部レジスタ上で行われるので80bitの精度が得られてしまうってこと?
x87使えばそうなるよ。
Re: (スコア:0)
gcc -S -mno-sse2で出力眺めると確かにそうなっていた。なるほど
Re:Luaって結構聞くけど (スコア:1)
ちなみに変数を整数にしたら500000000500000000を即値でprintfに渡すだけのコードになった。浮動小数点数だと分配法則が成り立たないからこの手の最適化ができないわけだな(そのわりに精度が途中だけ80bitになってもいいというのがよくわからんが)。
Re: (スコア:0)
浮動小数点演算は概算であること理解してないとわからんかもね
Re: (スコア:0)
概算でいいと適当に精度を勝手に変えてもいいの違いが理解できない奴には質問の意味すらわからんだろうね
Re: (スコア:0)
概算であるというのは人間による演算結果の評価にすぎず、浮動小数点演算の結果はIEEE754やIntelのマニュアルで厳密に定められているのだが
Re: (スコア:0)
「厳密に定められてる」って、浮動小数点演算の丸めのルールすら理解してないっぽいね。
Re: (スコア:0)
なるほど、じゃあWikipediaのIEEE 754の項目に書かれてる
https://ja.wikipedia.org/wiki/IEEE_754 [wikipedia.org]
Re: (スコア:0)
モードがいっぱいあるのと、あるモードの動作が厳密に定められているのは別の話じゃないかなあ。
実数演算と浮動小数点演算は違うというのは当たり前ですが、
浮動小数点演算結果と浮動小数点演算結果が異なるのは当たり前じゃないです。
必ず理由があります。
IEEE754は無限精度で演算して、結果を格納する時に丸めます。
モードとかが一致していれば変わるわけがないです。
言うまでもありませんが、丸め方法は決まっています。1つじゃないですが。
ただし真面目に考えてないコンパイラとかが多いのはその通り。
IEEE754はfloat, double変数に代入されるビットパターンの意味だと
思うくらいの方が安全だね。
昔はCとかでそんなこと追求する人はいなかった、かな? Fortran使えと。
Re: (スコア:0)
「浮動小数点演算の結果はIEEE754やIntelのマニュアルで厳密に定められているのだが」の意味分かってない人?
Re: (スコア:0)
ループ処理に浮動小数点演算使う馬鹿の言うことは話半分にしか聞けないな。
Re:Luaって結構聞くけど (スコア:2, 参考になる)
luaには整数型がなく、整数もfloatとして書く必要があります。
そういう言語なので、 for i=1,1e9 というのは、全く悪い書き方ではありませんよ。
Re:Luaって結構聞くけど (スコア:1)
本題から離れますが、Luaは5.3で整数型が追加されました。
パフォーマンスの問題だろうか?
Re:Luaって結構聞くけど (スコア:1)
Robertoが何を考えて整数型を追加したのかは定かではないけど、64bit整数の範囲をdoubleでは表しきれなかったので、doubleしかないのは用途によっては微妙に不便だったのよね。パフォーマンスの面も含めて、いろんな整数型拡張が作られていた(Luaは仕様もコードも小さい分、拡張するのは簡単)から、公式としてまとめておく必要があると思ったのかな。
Re: (スコア:0)
整数もってないLuaが持ってる言語を整数演算ベンチマークでぶち抜いたので
演算以外の部分にボトルネックがあることが晒されてしまったのさ。
Re: (スコア:0)
やっぱり#2897906はいまだにregisterキーワードとか使ってそうな老害だったのか
Re: (スコア:0)
知ってるか(#2897963)、次のC++ではregisterキーワードが再利用されるんだぜ
Re: (スコア:0)
知ってるか(#2897963)、次のC++ではregisterキーワードが再利用されるんだぜ
'register' は 2011 から deprecated & reserved で、予約語から外すという最近の提案は却下されたはず。
次の 2017 では廃止(予約語からは外さず)の提案も出ているようです。
確かに将来'register'は復活するかもしれませんが、
"次のC++では"云々というのは間違っていると思います。
Re: (スコア:0)
なんか古い話してんね。
Re: (スコア:0)
実装==仕様 な言語について何言ってんだかw
Re: (スコア:0)
1000000000(1G)回の繰り返し加算が3~4GHzのプロセッサで1秒以下ってJITならまあそんなもんだろう。
Re: (スコア:0)
luaは速いというか軽いんだよね
Re: (スコア:0)
Pen4 2.4GHzのLinux
ruby 2.2.3p173 (2015-08-18 revision 51636) [i686-linux]
でやってみたら108秒だったよ
Luaだと88秒だったので確かに速い
3分かかるようにするにはどうしたらいいのか教えて欲しい。
Re: (スコア:0)
その処理は公式を使えば一瞬で終わりますな。
Re: (スコア:0)
gccは整数の場合は回帰式を変換して一瞬で終わらせる
オーバーフローも考慮する
浮動小数点の場合は知らない
Re: (スコア:0)
浮動小数点の場合、gcc -Sで出力したソースを見る限りではx87でもSSE2でもそういう最適化は行われなかった。
これは別に最適化が劣っているとか手抜きだとか言うわけではなくて、結合法則すら成り立たない浮動小数点数だとたいていの公式は素直に適用できない("as-if"ルールを満たせない)ので、一見公式適用すれば一瞬で求められそうでも既定でそういう最適化はされない。もっとも結果が変わってもいから最適化を指示するオプションもあったと思う。
ちょっとオカピー (スコア:0)
hostapdがrunとの組み合わせで動かないみたい。
俺も含めて誰もsend-prしていないので、アップグレードしようと考えているやつは注意ね。
Re: (スコア:0)
runって、Host APって使えたっけ。manみる限り、使えなさそうなんだけど。
Re: (スコア:0)
NetBSD 7.0_BETA(2015年1月頃)ではrunで使えてますよ。
B社の1000円のアダプターでAPが作れるので、愛用しています。
Kobo Touch 対応 (スコア:0)
楽天のコボちゃんに対応したのかな?
持っている人、レポートよろしく。
いつまでたってもChromiumが移植されない (スコア:0)
FreeBSDには移植されてるのにNetBSDでは動かないってのはどういう理由なのだろう。
そんなに独特なOSの機能使ってるんだろうか。
Re: (スコア:0)
本当のことはわかりませんが、i386とamd64でしか動かないから、とか?
Re: (スコア:0)
Windows にだって、Windows 8 サイコーとか言ってたヤツが居るじゃん。