ygrek wrote:
> Привет,
>
> При статическом вызове метода снаружи класса - т.е. так
>
> CLASS class : hello ." HELLO" CR ; ;CLASS
> class NewObj VALUE obj
> obj :: class.hello
>
> компилируется вызов не напрямую CALL, а через SEND.
> Понятно что надо переключать SELF, но вызов при этом идёт косвенный -
> через CALL регистр. Можно ли в принципе немножко соптимизировать т.к.
> на этапе компиляции вся информация про обьект доступна?
>
1. Если мы на 100% уверены что в hello не будет вызываться self или
данные то можно просто сделать CALL, но здесь легко сделать ошибку.
2. Можно (SEND) переписать на ассемблере, наверняка это прилично
поднимет скорость
3. Можно (SEND) заинлайнить и оптимизатор отрежет часть инструкций по краям
4. Самая лучшая оптимизация - все трудоемкие операции упаковывать в
слова внутрь класса
В принципе даже через (SEND) можно заменить снижение быстродействия
только например считая математику и вызывая например умножение векторов
так, тогда процентов 5 снижения будет заметно.
Дело в том что в основном методы вызываются внутри класса то есть
простые форт слова, а снаружи класс дает интерфейс управления, то есть
какие-либо потери в (SEND) незначительны имхо и в крайнем случае я бы
сделал пункт 2.
> Можно было бы сдвинуть внутреннюю структуру обьекта так чтобы сами
> данные начинались по смещению ноль, а дополнительная ячейка в -CELL
> Удобнее будет брать размер обьекта или давать адрес на его
> внутренности, когда это зеркало какой-нибудь структуры API например CRect.
>
Да, мысль хорошая, думаю стоит реализовать. Записал в todo list.
Дмитрий.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >>
http://get.splunk.com/_______________________________________________
Spf-dev mailing list
[hidden email]
https://lists.sourceforge.net/lists/listinfo/spf-dev