[Message Prev][Message Next][Thread Prev][Thread Next][Message Index][Thread Index]
[MD:1360]A solution for "Bitmap kills emacs" problem.
- X-ml-count: 1360
- Subject: [MD:1360]A solution for "Bitmap kills emacs" problem.
- From: Miyashita Hisashi(宮下 尚:HIMI) <himi@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: 29 Aug 1999 11:15:45 +0900
- User-agent: Nana-gnus/6.13.3 SEMI/1.13.5 (Meihō) FLIM/1.13.2 (Kasanui) Emacs/20.4 (alpha-*-nt4.0.1381) MULE/4.1 (AOI) Meadow/1.06 Beta2 (FUTAAWI:27)
堀口さん、ありがとうございます。
この件に関しては、悩みまくっているんですが、Meadow.planにいれて、
ちょっと半田さんに相談することにします。^^;;;
堀口さんのpatchはとても良くできていて、本来r_allocは、取得元の
pointerしか面倒を見ませんが、その他のpointerまで面倒を見てくれます。
しかし、全てのHeap Blockに対してrelated pointerを、範囲に入っているか
照合し、登録しにいくので、どうしても大掛かりになりますし、なにより
BufferからGLYPHを構築するこの部分だけの問題だけで、このような操作が
本当に必要かということになると疑問が残ります。
すでに、堀口さんなどは熟知してらっしゃられると思いますが、
問題点を絞り込み、検証するとしたら、以下の2点にあてるのが、
まあ適当だと思われます。
1. gmallocからのmorecoreにおいて、reallocationを抑制する。
2. str_cmpchar_idで、malloc/reallocの呼び出しを控える。
という点に絞られます。
r_allocにはこのような目的の為にfreeze機能を持っています。この
機能を用いてreallocationを凍結すれば、落ちることはなくなるのですが、
なにぶんstr_cmpchar_idが、異常なまでに大きなheap領域をreallocするので
大量のheapをfreeze時に確保しなくてはならず、大きな速度低下を招いてしまいます。
特に現代CPUではAssociativeが少ないcacheを大量に持つという
Memory Architectureを追い求めているものが多いので、
このような処理はできるだけ避けるべきだと思います。
まあ、こうなってくるとstr_cmpchar_id()開発元に相談するのが良いと思われます。
というわけで、1.06b2では、まだ修正しておりません。^^;;;
(ごめんなさい。)
from himi