アカウント名:
パスワード:
http://people.mozilla.org/~roc/Samsung/Mozilla2DGraphics.pdf [mozilla.org]ここでFirefoxがCairoを捨てた理由が述べられてるけど、ステートフルなAPIってのが駄目らしい。デファクトになりつつあるskiaとかDirect2Dはステートレスで、実際Firefoxが使うようになって早くなった。(Linux版も次の27でskiaを使うようになるようだ)
そんな逆風が吹いている中でだけに、このニュースは意外だ。それだけ設計や実装が綺麗だということなんだろうね。これで開発に弾みがついてくれればいいけど。
注文したら一瞬で出てくるというのは本当だったのか
#それはすき家##GOTOが多かったりしたら嫌だな
「ステートレス」って待ち時間がないことだと思ってますか?
こっちかも。> Firefoxが使うようになって早くなった
設計が奇麗というか、ステートフルなAPIはレガシーコードを残したまま拡張が可能という特徴がありますので、そこが評価されてるんじゃないでしょうか。ただ、こういったコンテキストにグローバル変数を持たせるような構造はモジュール化を酷く阻害するんですよね。性能が出ない上に教育にも悪いといった結果にならなければいいのですが。
ステートフルといったら、十数年前 OpenGL の入門書を読んだ時にも、それはステートフルだと思ったけどな、最近はどうなの?今も同じなら、OpenGL はやっぱり遅いということになるの?
C++ 用だということは、Template あたりで実装されて、コンパイラで最適化したら速くなったりしないのですかね。
ステートフルだから遅いとか速いとかそういうことではなく、現代のブラウザで描画ライブラリとして使うには相性が悪いということ。リンク先のPDFでは「CSSはステートレスだし、CanvasはステートフルだがCairoのものとは別物だ。 だからステートフルな描画ライブラリだとステート管理が大変になる」(結果として遅くなる)みたいなことが書いてある。
いや、事前に幾つもステートを用意しておいてそれを指定するやり方と比べて、ステートフルだと何かする度に毎回状態を書き換えないといけないから一般論として遅いと言っていいと思うよ。ステートレス≧ステートフルなイメージだけど。
ようするに、同じステートで後で描画する為にステートを(メモリ)コピーしておかなければいけないのが直接的な遅い原因だと思う。OpenGLで言えば、glPushMatrix()は単純にMatrixをメモリコピーしてて超遅い。何度Matrixのポインタを直接指定できないのかと思ったもんだ…(遠い昔の記憶)
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
UNIXはシンプルである。必要なのはそのシンプルさを理解する素質だけである -- Dennis Ritchie
Cairoはモダンな実装ではないと思う (スコア:3, 興味深い)
http://people.mozilla.org/~roc/Samsung/Mozilla2DGraphics.pdf [mozilla.org]
ここでFirefoxがCairoを捨てた理由が述べられてるけど、ステートフルなAPIってのが駄目らしい。
デファクトになりつつあるskiaとかDirect2Dはステートレスで、実際Firefoxが使うようになって早くなった。
(Linux版も次の27でskiaを使うようになるようだ)
そんな逆風が吹いている中でだけに、このニュースは意外だ。
それだけ設計や実装が綺麗だということなんだろうね。これで開発に弾みがついてくれればいいけど。
Re: (スコア:0)
注文したら一瞬で出てくるというのは本当だったのか
#それはすき家
##GOTOが多かったりしたら嫌だな
Re: (スコア:0)
「ステートレス」って待ち時間がないことだと思ってますか?
Re: (スコア:0)
こっちかも。> Firefoxが使うようになって早くなった
Re: (スコア:0)
設計が奇麗というか、ステートフルなAPIはレガシーコードを残したまま拡張が可能という特徴がありますので、そこが評価されてるんじゃないでしょうか。
ただ、こういったコンテキストにグローバル変数を持たせるような構造はモジュール化を酷く阻害するんですよね。
性能が出ない上に教育にも悪いといった結果にならなければいいのですが。
Re: (スコア:0)
ステートフルといったら、十数年前 OpenGL の入門書を読んだ時にも、それはステートフルだと思ったけどな、最近はどうなの?今も同じなら、OpenGL はやっぱり遅いということになるの?
C++ 用だということは、Template あたりで実装されて、コンパイラで最適化したら速くなったりしないのですかね。
Re: (スコア:0)
ステートフルだから遅いとか速いとかそういうことではなく、
現代のブラウザで描画ライブラリとして使うには相性が悪いということ。
リンク先のPDFでは
「CSSはステートレスだし、CanvasはステートフルだがCairoのものとは別物だ。
だからステートフルな描画ライブラリだとステート管理が大変になる」(結果として遅くなる)
みたいなことが書いてある。
Re:Cairoはモダンな実装ではないと思う (スコア:2)
いや、事前に幾つもステートを用意しておいてそれを指定するやり方と比べて、
ステートフルだと何かする度に毎回状態を書き換えないといけないから一般論として遅いと言っていいと思うよ。
ステートレス≧ステートフルなイメージだけど。
ようするに、同じステートで後で描画する為にステートを(メモリ)コピーしておかなければ
いけないのが直接的な遅い原因だと思う。
OpenGLで言えば、glPushMatrix()は単純にMatrixをメモリコピーしてて超遅い。
何度Matrixのポインタを直接指定できないのかと思ったもんだ…(遠い昔の記憶)