by
Anonymous Coward
on 2009年12月22日 17時37分
(#1692798)
いや、たとえば var a = [100000]; とかやったとき、800000バイトの記憶領域を確保せざるをえないのよ。インタプリタは配列がバイト値の格納にしか使われないかどうか判断することができないから。HTML5 Canvasとかバリバリ使うスクリプトで、画像データをJavaScriptで丸抱えする必要があるときにはクリティカルに効いてくる。 問題解消のためにByteArrayを導入しようとしたけど失敗したというのが先日のストーリー [srad.jp]。仕方がないのでCanvasではCanvasPixelArrayという専用の型を定義して、実装がメモリを節約できるようにしている。少なくともFirefoxの実装では今のところ単なるJavaScriptの配列になるだけなので意味がないけど。
10倍? (スコア:1)
プログラミング分野に関わったことがないのでエロい人に教えてほしいのだが、
> C++の方が10倍効率がよいと考えれば
という仮定は妥当なの?
Re: (スコア:1)
PHPで配列にデータを読み込んだら読んだデータの10倍くらいのメモリ消費になったのでだいたい合ってると思う。
# 記事の方、CPU効率だなんて言ってないよね?
Re: (スコア:0)
Re: (スコア:1)
それを明示的に書くか自動的にやってもらうかの違いでしかなく
実用上それほどの差があるともおもえない。
Re:10倍? (スコア:3, 興味深い)
いや、たとえば var a = [100000]; とかやったとき、800000バイトの記憶領域を確保せざるをえないのよ。インタプリタは配列がバイト値の格納にしか使われないかどうか判断することができないから。HTML5 Canvasとかバリバリ使うスクリプトで、画像データをJavaScriptで丸抱えする必要があるときにはクリティカルに効いてくる。
問題解消のためにByteArrayを導入しようとしたけど失敗したというのが先日のストーリー [srad.jp]。仕方がないのでCanvasではCanvasPixelArrayという専用の型を定義して、実装がメモリを節約できるようにしている。少なくともFirefoxの実装では今のところ単なるJavaScriptの配列になるだけなので意味がないけど。
Re: (スコア:0)
文字列を使うといいよ。文字列は単なる16bit整数の配列だと規格で保証されてるから。
と言いたいところだけど、IEだと文字列操作が異常に遅いんだよねぇ…。