作者: MATSUI Fe2+ Tetsushi
日時: 2008/5/24(00:51)
Fe2+ です。

At Fri, 23 May 2008 23:17:05 +0900,
Yukihiro Matsumoto wrote:
> In message "Re: [TSpython:1112] Re: 参照渡し"
>     on Fri, 23 May 2008 21:42:58 +0900 (JST), kikwai@... (機械伯爵) writes:
> 
> |> 整数演算時にオーバーヘッドがでかくなりそうな気がするんですが、
> |> なにかワザを駆使してたりするんでしょうか。
> |
> | 又聞きなので確かではないですけど、フツーにオーバーヘッドがでかくなって
> |と思われます。
> 
> たしか小さめの整数はあらかじめアロケートしてるはずです。100
> 個だったか。

確かめてみたところ 256 までみたいです。

>>> a = b = 0
>>> while a is b:
...     a += 1; b += 1
... 
>>> print a
257

一方、負の数はわずかに -5 まででした。

At Fri, 23 May 2008 21:42:58 +0900 (JST),
機械伯爵 wrote:
>  まぁ、そこらへん、最適化技術ではどーにかしてるのかもしれないです(いや
> 多分してるんだろうけど)が、建前は、
> 
>  1+1 と (1).__add__(1) は等価の筈です。

上の節約術では 1+1 と (1).__add__(1) の等価性は崩れてないけれど 257+257
とはオブジェクト生成回数が3回違うというわけですよね(ちょっと自信無し)。


ついでなので触れておきますが、psyco では整数同士の演算で Python の整数
オブジェクトは経由せずに直接 CPU の整数演算命令を使ってしまうことで高速
化を図っている、とプレゼン資料で見た記憶があります。最適化云々はこれの
ことでしょうか。
# 最近は psyco をインストールすらしていないなあ
-- 
MATSUI "Fe2+" Tetsushi