Re[5]: Опять веб-приложения
От: WFrag США  
Дата: 03.09.08 11:51
Оценка: 2 (1) +3
Здравствуйте, Кэр, Вы писали:

Кэр>Тогда определенно стоит взглянуть на IE8. Там это все есть.


P.S. Ещё один аргумент за Google в том, что их продукты sexy. Они не сверх функциональны, в общем-то, ничего революционного, но они очень хорошо подаются. IE 8 не вызвал у меня восторга, Google Chrome — «вау» на каждом шагу. Начиная от просмотра комикса

Например, перетаскивание табов. Сделано, на мой взгляд, просто отлично.
Re: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.09.08 17:14
Оценка: +1 -1 :))
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>2. Гугль таки делает свой браузер на основе WebKit — Google Chrome. Броузер будет включать в себя новую ВМ для JavaScript под названием V8 (немецкая разработка). Одна из причин его создания — малая приспособленность современных броузеров к исполнению web-приложений. На самом гугле о броузере есть комиксы. И нашлись не ленивые люди, сделавшие перевод комиксов на русский.


ANS>ЗЫ. Похоже, что IE8 — ничем интересным порадовать не сможет


Гугль пока что тоже ничем новым не порадовал. Его броузер, пока что — это просто новый ГУЙ для Мозилы 5.0, т.е. тоже самое что и ФаейрФокс. Этим и определяется высокое качество его работы.

Что до приложений, то идея писать на скриптах — это шаг назад. Давно есть Ява и дотнет созданные как раз для подобных целей. Их бы и развивали бы, а не мались бы дурью со скриптами.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Опять веб-приложения
От: c-smile Канада http://terrainformatica.com
Дата: 06.09.08 06:34
Оценка: +3 :)
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, AndrewVK, Вы писали:


AVK>>И то, что это не Мозилла.


VD>Открой эбаут и почитай.


VD>ЗЫ


VD>Если бы это не был мозила, то он и работал бы далеко не так гладко.


Это WebKit layout engine + GDI backend + NS plug-in system (Mozilla).
Уж поверь.

Если ты про это:

Official Build 1583
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.27 Safari/525.13


то это USerAgentId. Которая в случае IE например выглядит так:
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.04506.30

Т.е. IE это такая Mozilla...
Re[9]: Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.09.08 07:41
Оценка: 63 (2) -1
Здравствуйте, VladD2, Вы писали:

ANS>>Кстати, эта самая ВМ для St разрабатывалась фирмой Animorphic сейчас это Strongtalk.


VD>Объясни, плиз, окружающим что означает "Strong" в названии "Strongtalk". А потом поговорим дальше... если желание к тому времени не отпадет само собой.


Не знаю. А что обозначает слово "morphic" в "Animorphic"? Если ты намекаешь на статические типы, то связи между статической типизацией и ВМ там нет. Там есть опциональная валидация типов, которая не используется ни при трансляции в байткод, ни при трансляции байткода в машкоды. Т.е. проставляются аннотации типов, их непротиворечивость можно проверить, а можно и не проверять. Теоретически туда можно прикручивать разные системы типов.

Если интересует теория устройства ВМ, то там на сайте лежат:

* Optimizing Dynamically-Dispatched Calls with Run-Time Type Feedback Proceedings of ACM SIGPLAN `94: Describes the basic principles of type-feedback. This paper is for the Self system, not Strongtalk, but the basic technology is the same.

* Adaptive optimization for Self: Reconciling High Performance with Exploratory Programming Ph.D. thesis, Computer Science Department, Stanford University. This is even more detail on type-feedback for Self

* Optimizing Dynamically-Typed Object-Oriented Programming Languages with Polymorphic Inline Caches ECOOP '91 Conference Proceedings

http://www.smalltalk.ru << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[7]: Опять веб-приложения
От: c-smile Канада http://terrainformatica.com
Дата: 03.09.08 22:10
Оценка: 54 (2) +1
Здравствуйте, Mamut, Вы писали:

CS>>Ты в принципе можешь отJITить вот это (var i = 0; i < 10; ++i) ибо здесь локальная переменная — может быть представлена как int в процессоре.

CS>>Но для count += 1 тебе уже этого сделать нельзя так как variable storage не может быть приведен к типу int
CS>>по определению самого языка. Т.е. результат твоего jit это будет в общем случае последоватльность
CS>>неких нативных function calls что в общем случае не сильно эффективне чем интерпретация байткода.

M>В описании того же Trace Monkey написано, что они вычисляют типы переменных, а потом скармливают это JIT'у. То есть код/AST(?), скармливаемый JIT'у типизирован настолько, насколько это возможно


Это понятно, теория вывода типов известна давно.
Вопрос состоит в стомости вывода овчинки.

Возьми любой свой код на JS и проанализуруй его на предмет JITable конструкций.
Ну скажем конструкции типа работы с DOM (не JITable в общем случае):

document.select(":hidden").show() ты увидишь часто, но скажем даже примитивные циклы типа
for(var i = 0; i < 10; ++i) { ... }

(которые JITable еще как-то) ты найдешь достаточно редко. Т.е. тебе бы наоборот даже полезно было бы
JIT отключить потому как даже построение AST это уже накладно будет в каких-то случаях.

Ко мне тут бойцы обратились которые для jQuery пишут модуль для воспроизводства моих flex units.
Там в принципе JIT пригодился, но все как всегда. Помимо того что это крайне коряво смотрится без поддержки в CSS так оно
еще и "не лизе" в модель DOM ибо этот DOM не предусматривает детерминированость событий onSize.
Ну про наличие таких вещей как element.onBeforeLayout, element.onAfterLayout и element.intrinsicContentMin/MaxWidth я вообще молчу.

Реально нужно что-то делать с этим полуубитым CSS и дурацки неэффективным DOMом чем с JS.
Да хотя бы вот этот мой prototype/behavior атрибут добавить в CSS. Уже одно это подняло бы в разы скорость решения типовых задачи решаемых с помощью jQuery и других самоделок.
Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 02.09.08 10:30
Оценка: 10 (3)
1. В FF 3.1 будет динамический транслятор для JavaScript. Они его называют Tracing JIT. Принцип работы как и в HotSpot — нахождение и оптимизация критических кусков кода. На разных тестовых наборах ускорение от 2х до 22х раз.

2. Гугль таки делает свой браузер на основе WebKit — Google Chrome. Броузер будет включать в себя новую ВМ для JavaScript под названием V8 (немецкая разработка). Одна из причин его создания — малая приспособленность современных броузеров к исполнению web-приложений. На самом гугле о броузере есть комиксы. И нашлись не ленивые люди, сделавшие перевод комиксов на русский.

ЗЫ. Похоже, что IE8 &mdash; ничем интересным порадовать не сможет
http://www.smalltalk.ru << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[2]: Опять веб-приложения
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 02.09.08 11:49
Оценка: 1 (1) +2
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>>ЗЫ. Похоже, что IE8 &mdash; ничем интересным порадовать не сможет


ANS>Что не удивительно, учитывая, что МС с Интернетом постоянно "провтыкивала" момент


У МС для веб-приложений есть Silverlight. А подковывать в очередной раз хромую кобылу ...
... << RSDN@Home 1.2.0 alpha 4 rev. 1106 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[3]: Опять веб-приложения
От: WFrag США  
Дата: 03.09.08 05:22
Оценка: 1 (1) +2
Здравствуйте, Курилка, Вы писали:

WF>>По крайней мере, для меня в нём куча полезных фич. Быстрый JS, большая независимость между табами..


К>А можно пояснить выделенное — это как?


Падение одного таба в FF приводит к падению всего браузера.

Утечки памяти в одном табе и фрагментация памяти из-за них распространяется на все табы (надо перезапускать браузер при продолжительной работе с JS-приложениями).

Тормоза JS в одном табе подвешивают весь браузер.

Это то, что для меня наиболее критично.
Re[3]: Опять веб-приложения
От: Klapaucius  
Дата: 02.09.08 18:23
Оценка: +3
Здравствуйте, nikov, Вы писали:

N>Во-вторых, взгляни на IronPython (который работает на .NET и, соответственно, использует дотнетовский JIT)


А там что, с прошлого года существенные изменения, или все как в старые добрые времена?
Автор: Klapaucius
Дата: 09.06.07
Потому, что JIT для скрипта и интерпретатор скрипта, код которого (интерпретатора) джитится это не одно и то же, n'est pas?
... << RSDN@Home 1.2.0 alpha 4 rev. 1110>>
'You may call it "nonsense" if you like, but I'VE heard nonsense, compared with which that would be as sensible as a dictionary!' (c) Lewis Carroll
Re[13]: Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 07.09.08 11:58
Оценка: -3
EC>Ты имеешь в виду, что все методы должны быть виртуальными?

Всё должно быть максимально единообразно. Либо все методы невиртуальные, либо все виртуальные. Для ОО системы естественно последнее.
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[9]: Бенчмарки
От: c-smile Канада http://terrainformatica.com
Дата: 04.09.08 15:33
Оценка: 17 (1) +1
Здравствуйте, Mamut, Вы писали:

M>Решил закинуть бенчмарки в эту подветку.


M>Сссылка вот: http://ejohn.org/blog/javascript-performance-rundown/


M>V8 в основном направлен на оптиизацию рекурсии

M>TraceMonkey пока рекурсию не оптимизирует

Вот тебе другая ссылка про Psyco (это JIT для Python)
http://www.ibm.com/developerworks/library/l-psyco.html

Т.к. "JavaScript это такой Python" то в общем-то интересны рассуждения как то:

The main thing to understand is that Psyco is useful for handling blocks that loop many times, and it knows how to optimize operations involving integers and floating point numbers. For non-looping functions, and for operations on other types of objects, Psyco mostly just adds overhead for its analysis and internal-compilation. Moreover, for applications with large numbers of functions and classes, enabling Psyco application-wide adds a large burden in machine-code compilation and memory-usage for this caching.


ну или вот:

.. where the script initially took about 8.5 seconds to run, after Psyco's "speedup" it ran in about 12 seconds.


это я к тому что все свою цену имеет.

Сам знаешь что на некоторых тестах C# уделывает С++. Но в реалии чудес не быват.
Re[4]: Опять веб-приложения
От: dotneter  
Дата: 07.09.08 09:14
Оценка: 1 (1) +1
Даешь Silverlight версию RSDN написаную на Nemerle =)
Talk is cheap. Show me the code.
Re: Опять веб-приложения
От: c-smile Канада http://terrainformatica.com
Дата: 02.09.08 17:48
Оценка: +2
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>2. Гугль таки делает свой браузер на основе WebKit


Неверно.

Дословно: "используются элементы WebKit и FireFox"

We've used components from Apple's WebKit and Mozilla's Firefox, among others

http://googleblog.blogspot.com/2008/09/fresh-take-on-browser.html

ANS>1. В FF 3.1 будет динамический транслятор для JavaScript. Они его называют Tracing JIT. Принцип работы как и в HotSpot — нахождение и оптимизация критических кусков кода. На разных тестовых наборах ускорение от 2х до 22х раз.


JIT для typeless языков это технический non-sense.
Re[6]: Опять веб-приложения
От: Mamut Швеция http://dmitriid.com
Дата: 03.09.08 08:04
Оценка: +2
CS>Ты в принципе можешь отJITить вот это (var i = 0; i < 10; ++i) ибо здесь локальная переменная — может быть представлена как int в процессоре.
CS>Но для count += 1 тебе уже этого сделать нельзя так как variable storage не может быть приведен к типу int
CS>по определению самого языка. Т.е. результат твоего jit это будет в общем случае последоватльность
CS>неких нативных function calls что в общем случае не сильно эффективне чем интерпретация байткода.

В описании того же Trace Monkey написано, что они вычисляют типы переменных, а потом скармливают это JIT'у. То есть код/AST(?), скармливаемый JIT'у типизирован настолько, насколько это возможно


dmitriid.comGitHubLinkedIn
Re[7]: Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 03.09.08 11:16
Оценка: +1 -1
Здравствуйте, Кэр, Вы писали:

Кэр>Но вопрос остается в силе — зачем мне javascript после релиза Silverlight?


Потому как программы без пользователей никому не нужны. Хинт: см. апплеты.

Отвечать на любые возражения в этой ветке не буду, ибо предлагаю подождать пару-тройку лет и всё увидеть самому.
http://www.smalltalk.ru << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[8]: Опять веб-приложения
От: fmiracle  
Дата: 03.09.08 13:00
Оценка: +2
F>Здравствуйте, Сергей, Вы писали:
WF>>>Например, перетаскивание табов. Сделано, на мой взгляд, просто отлично.
F>Да они там на каждом шагу говорят, что позаимствовали у других хорошие идеи, уже себя зарекомендовавшие...

Я имею в виде, что тыкаь их тем, что это не ново бессмысленно — они и не утверждают

Но главное все же только наличие фичи, но и насколько удачно она вписывается в продукт в целом.
Re[9]: Опять веб-приложения
От: Кэр  
Дата: 04.09.08 07:15
Оценка: :))
Здравствуйте, Sinclair, Вы писали:

S>В принципе, я не против более JIT-friendly платформ, например тот же серебряный свет копает именно в ту сторону. Но для его использования нужно мало того, что отказаться от очень большой доли аудитории (пока)


Хы-хы. После Олимпиады в Пекине silverlight в Америке не скачали только те, кто Олимпиадой не интересовался. Так что рынок как минимум в Штатах уже покрыт ровным слоем инсталляций второй беты Silverlight 2.0
Re[10]: Опять веб-приложения
От: Mamut Швеция http://dmitriid.com
Дата: 04.09.08 08:35
Оценка: +1 :)
Кэр>Хы-хы. После Олимпиады в Пекине silverlight в Америке не скачали только те, кто Олимпиадой не интересовался. Так что рынок как минимум в Штатах уже покрыт ровным слоем инсталляций второй беты Silverlight 2.0

Не думаю, что его вообще кто-то скачал Всю инфу показывали по телевизору


dmitriid.comGitHubLinkedIn
Re[7]: Опять веб-приложения
От: c-smile Канада http://terrainformatica.com
Дата: 05.09.08 04:59
Оценка: +2
Здравствуйте, z00n, Вы писали:

Z>Здравствуйте, VladD2, Вы писали:

VD>>Скрипты используют идиомы вроде "ООП на безе прототипов" которые принципиальноне совместимы с компиляцией в нэйтив-код.

Z>Есть такой малоизвестный язык Lisaac (http://en.wikipedia.org/wiki/Lisaac). Он prototype-based как Self, и при этом бескомпромиссно быстрый, как С.


Кросс компиляция одного языка в С это еще не значит что итоговая скорость имплементации некоего алгоритма будет быстрее чем то же самое на голом C.
Я с таким же успехом могу байткод сконвертирвать в C. Только это не великий смысл имеет. Архитектура объектов и памяти остается той же.

И вообще чем оно такое в принципе отличается от Objective-C http://en.wikipedia.org/wiki/Objective-C#Dynamic_typing ?
Re[11]: Бенчмарки
От: Курилка Россия http://kirya.narod.ru/
Дата: 05.09.08 06:47
Оценка: +2
Здравствуйте, Mamut, Вы писали:

CS>>это я к тому что все свою цену имеет.


CS>>Сам знаешь что на некоторых тестах C# уделывает С++. Но в реалии чудес не быват.


M>Мне вот во всех этих Яваскриптовых JIT'ах интересна на самом деле оптимизация рекурсии. Будем писать все в функциональном стиле?


А зачем "все"?
Если есть проверенное императивное решение для задачи, то не обязательно его на ФП переписывать просто "ради идеи" по-моему
Re[11]: Опять веб-приложения
От: goorov  
Дата: 05.09.08 07:04
Оценка: +2
Здравствуйте, AndrewVK, Вы писали:

AVK>Это к вопросу о том, что Гугль сказал какое то новое слово в разработке веб-приложений при помощи Chrome. Тут одно из двух — либо он ничего нового, кроме улучшенной производительности, не предлагает, тогда ничего особенного и не произошло, либо там появляются какие то новые возможности, но это автоматом ограничивает приложения, которые их используют, исключительно хромом.


здесь есть мнение, что выиграть войну броузеров это совсем не цель для гугла, цитирую:

Its real goal, embedded in Chrome's open-source code, is to upgrade the capabilities of all browsers so that they can better
support (and eventually disappear behind) the applications.


чуствую, что мужик где-то недалек от истины добавляя в хром всякие обычные и необычные возможности для поддержки приложений (в первую очередь своих же), гугл неявно будет подстегивать разработчиков остальных браузеров более активно двигаться в том же направлении. В конце концов это может превратить браузер в что-то типа web os, причем некоторые конкуренты (не будем называть их громкие имена ), если не пошевелятся, рискуют сильно сдать позиции. А так в общем-то да, ничего особенного не произошло...
Re[4]: Опять веб-приложения
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.09.08 17:52
Оценка: +1 -1
Здравствуйте, VladD2, Вы писали:

VD>>>Гугль пока что тоже ничем новым не порадовал. Его броузер, пока что — это просто новый ГУЙ для Мозилы 5.0


AVK>>http://en.wikipedia.org/wiki/Webkit


VD>И?


И то, что это не Мозилла.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[8]: Jit для динамических языков
От: z00n  
Дата: 04.09.08 15:13
Оценка: 4 (1)
Здравствуйте, c-smile, Вы писали:

CS>Допустим есть такой код:

CS>
CS>for( var i = 0; i < 10; ++i )
CS> count += 1;
CS>
CS>
CS>Где count это global value.
CS>Ты в принципе можешь отJITить вот это (var i = 0; i < 10; ++i) ибо здесь локальная переменная — может быть представлена как int в процессоре.
CS>Но для count += 1 тебе уже этого сделать нельзя так как variable storage не может быть приведен к типу int
CS>по определению самого языка. Т.е. результат твоего jit это будет в общем случае последоватльность
CS>неких нативных function calls что в общем случае не сильно эффективне чем интерпретация байткода.

Ну давайте поставим эксперимент. Возьмем пару динамически типизированных языков для которых есть jit и посмотрим.
Задача: 10 миллионов раз добавить к полю `count' hash-таблицы `t' единицу.

1) Lua- Luajit (http://www.lua.org http://luajit.org/)
--// jit-test.lua

local t = {count = 0}

for i=1,1E7 do
    t.count = t.count + 1
end

print(t.count)


Результат:
bash$ time lua jit-test.lua
10000000

real    0m1.748s
user    0m0.106s
sys    0m0.091s

bash$ time luajit jit-test.lua
10000000

real    0m0.818s
user    0m0.061s
sys    0m0.061s


2) NekoVM (http://nekovm.org/)
// jit-test.neko 
var t = {count => 0};

var N = 0;
while (N < 10000000) {
  N += 1
  t.count += 1 
}

$print(t.count)


Результат (только jit, он у Neko не отключается):
$ nekoc jit-test.neko

$ time neko jit-test.n
10000000
real    0m0.656s
user    0m0.031s
sys     0m0.000s


3) Теперь возьмем для примра TIScript (http://www.terrainformatica.com/tiscript/main.whtm)
// jit-test.tis

var t = {count:0};
for(var i = 0; i < 10000000; ++i){
   t.count += 1;
}

stdout.printf("%d\n",t.count)


$ time ./tis jit-test.tis
10000000

real    0m7.508s
user    0m0.031s
sys     0m0.015s


Итак:
+----------+-------+--------+
|          |  Jit  | NonJit |
+----------+-------+--------+
| Lua      | 0.82  | 1.75   |
+----------+-------+--------+
| Neko     | 0.66  |   --   |
+----------+-------+--------+
| TIScript |   --  | 7.50   |
+----------+-------+--------+


Простые эксперименты (типа замены `count' на локальную переменную) показывают что доступ к хеш-таблице занимает примерно 3/4 общего времени.
Вывод: jit для динамических языков, конечно, не блещет в ускорении доступа к хеш-таблице, но 100% прирост дает (вычисления он ускоряет на порядок). Написание лучшей VM (камень в огород Spidermonkey, TIScript etc.) дает прирост еще на сотни процентов.

Neko и Luajit обе написаны единственным разработчиком (у всяких тамариновцев расурсов, по крайней мере материальных, не в пример больше). Автор Luajit считает его недостаточно быстрым и пишет Luajit2 — обещает ускорение еще в разы.
Re[3]: Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 02.09.08 11:58
Оценка: -1
Здравствуйте, AndrewVK, Вы писали:

AVK>У МС для веб-приложений есть Silverlight. А подковывать в очередной раз хромую кобылу ...


Имхо это они мимо тазика. Как и java-applets в своё время. Выход IE9 покажет
http://www.smalltalk.ru << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[2]: Опять веб-приложения
От: nikov США http://www.linkedin.com/in/nikov
Дата: 02.09.08 18:11
Оценка: :)
Здравствуйте, c-smile, Вы писали:

CS>JIT для typeless языков это технический non-sense.


Во-первых, JavaScript — это не typeless язык, а динамически типизированный язык со слабой типизацией.
Во-вторых, взгляни на IronPython (который работает на .NET и, соответственно, использует дотнетовский JIT)
Re[8]: Опять веб-приложения
От: Sinclair Россия https://github.com/evilguest/
Дата: 04.09.08 03:27
Оценка: +1
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, Sinclair, Вы писали:


S>>Здравствуйте, c-smile, Вы писали:


CS>Что может JIT здесь сделать?

Здесь — ничего. А зачем джиттить одноразовый код? Это займет больше времени, чем интерпретация.
А вот если мы делаем это в хэндлере, который вызывается десять тыщ мильенов раз, то
1. имеет смысл немножно потратиться ради ускорения тела цикла
2. типы скорее всего пришли в равновесие
CS>В момент исполнения o.count += 1; такой переменной (слота) вообще нет.

CS>Я же не о том что нельзя применять. Можно конечно.

CS>Я о другом — насколько эффектвен JIT на тех реальных задачах на которых используется JS?
Давай посмотрим, к примеру, на maps.*.com. На gmail/hotmail/yahoomail.
Там код очень статический; причем page state teardown происходит редко — жертва открывает свой инбокс в 8 утра и до 17 шарашит одну и ту же страничку.
При этом из казуального это приложение становится основным, и responsiveness UI становится критичным. Не вижу никаких причин отказываться от оптимизации этих приложений.
CS>RayTracing на JS делать... как бы помягче сказать...
Ну вот на Linq же сделали

Понимаешь, альтернатива в виде развития нативного контекста — очень-очень дорогая штука. Джаваскрипт рулит немеряно ровно потому, что мне не нужно ждать того светлого дня, когда все три основных движка наконец-то поддержат новую красивую фичу (где мне :hover на любом элементе???) и все пользователи их поставят, а достаточно подложить на сайт .js — и все заиграет новыми красками.

В принципе, я не против более JIT-friendly платформ, например тот же серебряный свет копает именно в ту сторону. Но для его использования нужно мало того, что отказаться от очень большой доли аудитории (пока), но еще и переписать свои приложения. А джит для дж.с. ускорит всех.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[10]: Опять веб-приложения
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 04.09.08 14:25
Оценка: +1
Здравствуйте, Курилка, Вы писали:

К>А что, есть прецеденты?


Это к вопросу о том, что Гугль сказал какое то новое слово в разработке веб-приложений при помощи Chrome. Тут одно из двух — либо он ничего нового, кроме улучшенной производительности, не предлагает, тогда ничего особенного и не произошло, либо там появляются какие то новые возможности, но это автоматом ограничивает приложения, которые их используют, исключительно хромом.
... << RSDN@Home 1.2.0 alpha 4 rev. 1106 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[5]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.09.08 17:24
Оценка: +1
Здравствуйте, Sinclair, Вы писали:

S>Как только мы кладем в этот слот что-то не инт, мы просто обсолетим проджиттенный код. Делов-то.


Проблемы очевидные. Есть вывод типов и языки под него заточенные. В них можно добиться отсутсвия явной типизации и при этом наличие полной информации о типах. А есть скрипы которые конечно позволяют в некоторых местах вывести типы, но они не проектировались для этих целей и в результате не позволяют добиться серьезного повышения производительности и надежности. Это демонстрируют и PyPy для Питона, и ХотСпот для Смортока, и все потуги в области оптимизации ЯваСкрипта.

Скрипты используют идиомы вроде "ООП на безе прототипов" которые принципиально не совместимы с компиляцией в нэйтив-код. Посему улучшать они что-то там могут, но добиться того же что скажем Ява или дотнет они не в силах. Меж тем преимуществ у скриптовых языков практически нет. Всего того же самого можно добиваться и в статически типизированных языках (например, с выводом типов). Так что на мой взгляд c-smile прав. Очередной виток хождений "в-не-туда".
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Опять веб-приложения
От: z00n  
Дата: 04.09.08 20:12
Оценка: -1
Здравствуйте, c-smile, Вы писали:

CS>
CS>var i:int = 0;
CS>i += 1;
CS>


CS>действительно можно напустить JIT который будет эффективно работать т.е. a) быстро производить native code и b) быстро его исполнять.


На это можно напустить jit без всякой типизации и получить ускорение на порядок. Т.е в luajit код будет по скорости как Debug build C.
Re[8]: Опять веб-приложения
От: c-smile Канада http://terrainformatica.com
Дата: 04.09.08 22:08
Оценка: +1
Здравствуйте, z00n, Вы писали:

Z>Здравствуйте, c-smile, Вы писали:


CS>>
CS>>var i:int = 0;
CS>>i += 1;
CS>>


CS>>действительно можно напустить JIT который будет эффективно работать т.е. a) быстро производить native code и b) быстро его исполнять.


Z>На это можно напустить jit без всякой типизации и получить ускорение на порядок. Т.е в luajit код будет по скорости как Debug build C.


Это можно отJITить tckb сохранять и анализировать traces.
C наличием информации о типах ты можешь построить статический jit по типу ngen.exe из .NET.
В этом случае у тебя вместо BYTECODE_ADD будет BYTECODE_ADDI, BYTECODE_ADDF и т.д. Т.е. нечто что напрямую отображается на машинные инструкции.
Т.е. оверхед самого JIT становится минимальным. А так, в контексте Web страницы ты фактически вносишь еще одну временную неопределенность (время разгона).
Re[8]: Опять веб-приложения
От: Sinclair Россия https://github.com/evilguest/
Дата: 05.09.08 03:12
Оценка: +1
Здравствуйте, VladD2, Вы писали:
VD>Проблема только в том, что толку от HotSpot удалось добиться только в Яве. Хотя Смолтоковцы и кричат о крутости HotSpot-а для Смолтока, но кроме криков ничего серьезного предъявить не могут.
Ну почему — могут. Они добились впечатляющих результатов еще до того, как их позвали окучивать джаву.
Просто сейчас смолток настолько невостребован, что никакой хотспот его не спасает.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[4]: Опять веб-приложения
От: Cyberax Марс  
Дата: 05.09.08 17:49
Оценка: -1
Здравствуйте, VladD2, Вы писали:

AVK>>http://en.wikipedia.org/wiki/Webkit

VD>И? Это хреть работать только в броузере Гугля? Нет? Тогда что нового привнес этот броузер?
Из крупного: новый механизм изоляции и самый оптимизированый JavaScript. Ну и по мелочам: удобные popup'ы, многофункциональный address bar, история сайтов и т.п.
Sapienti sat!
Re[6]: Опять веб-приложения
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 06.09.08 09:52
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Открой эбаут и почитай.


Ты лучше про веб-кит почитай. От мозиллы там API плагинов. А движок другой.

VD>Если бы это не был мозила, то он и работал бы далеко не так гладко.


Сафари, по твоему, тоже gecko использует? Или он негладко работает?
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[10]: Опять веб-приложения
От: Sinclair Россия https://github.com/evilguest/
Дата: 08.09.08 04:15
Оценка: +1
Здравствуйте, VladD2, Вы писали:

VD>Он всегда был неудел. От части из-за извращенческого синтаксиса, а от части из-за динамической типизации которая, скажем на писюках с 640 Кб, была просто издевательством.

Я так понял, что именно из за пафоса он и был не у дел. Он был слишком коммерческий, из-за чего получился высокий входной барьер. Джава, которая с самого начала была халявной, получила большую популярность именно из-за легкости вхождения.
Вторая проблема — это всё же высокая стоимость хотспота. Джава с самого начала была рассчитана на то, что даже тупая reference implementation сможет успешно ее выполнять. Хотспот добавили годы спустя, когда платформа уже была популярной. А смолток опять же требовал высококачественного джита и рантайма, которые так просто на новую платформу не спортируешь.

VD>Зато гонора и пафоса у приверженцев СТ было всегда через край.

Тем не менее, техническое совершенство этой платформы — это факт. Факт, из которого нужно извлекать полезные выводы. Пойми, я не пытаюсь реанимировать смолток — я пытаюсь защитить подходы.

На примере Java и дотнета можно убедиться, что сборка мусора не является катастрофой для производительности — generational GC может свести затраты на уборку к минимуму.
На примере немерле можно убедиться, что аннотирование типов далеко не является необходимостью; умный компилятор может провести работу по выводу типов самостоятельно.

Есть подозрение, пока не опровергнутое, что даже динамика тоже не является убийцей производительности: даже если невозможно вывести тип статически, динамически тип вполне может оказаться определенным, что и позволит выполнять пусть спекулятивные, но оптимизации.
В итоге, теоретически мы имеем систему, где по факту в рантайме 90% кода является вполне строготипизированным (ну так получилось, что в i мы не кладем ничего, кроме int), а остальные 10% не оказывают решающего влияния на производительность. Это та же идея, что и со сборщиком мусора — 90% убирается практически бесплатно.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re: Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 02.09.08 10:44
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>(немецкая разработка).

Блин. Не из немеции, а из Дании. Простите. О V8 подробнее со слайда 13.

ANS>ЗЫ. Похоже, что IE8 &mdash; ничем интересным порадовать не сможет


Что не удивительно, учитывая, что МС с Интернетом постоянно "провтыкивала" момент
http://www.smalltalk.ru << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[4]: Опять веб-приложения
От: __SPIRIT__ Россия  
Дата: 02.09.08 16:10
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Здравствуйте, AndrewVK, Вы писали:


AVK>>У МС для веб-приложений есть Silverlight. А подковывать в очередной раз хромую кобылу ...


ANS>Имхо это они мимо тазика. Как и java-applets в своё время. Выход IE9 покажет


Аргументы за хромую кобылу в студию!
Re[3]: Опять веб-приложения
От: c-smile Канада http://terrainformatica.com
Дата: 02.09.08 18:27
Оценка:
Здравствуйте, nikov, Вы писали:

N>Здравствуйте, c-smile, Вы писали:


CS>>JIT для typeless языков это технический non-sense.


N>Во-первых, JavaScript — это не typeless язык, а динамически типизированный язык со слабой типизацией.


Если ты не можешь сказать "вот этот slot содержит только значения типа int" то
этот slot (variable) есть просто именованная typeless переменная. Нет там никакой ни сильной ни слабой типизации.
Это если гворить с математической строгостью.

N>Во-вторых, взгляни на IronPython (который работает на .NET и, соответственно, использует дотнетовский JIT)


А это причем здесь? Да, можно саму VM написать на managed языке и потом этот код отJITить, но к JIT самого bytecode это имеет почти никакое отношение.

JS это клеевой язык. Основное назначение: связка высокоэффектвных native функций между собой.
Писать на нем, скажем, попиксельную обработку изображний — себя не любить.
Правильно это делать примерно так: Image.brightness(0.7) но не так:
for(var px in Image.pixels)
{
  px.red *= 0.7;
  px.green *= 0.7;
  px.blue *= 0.7;
}


Ибо кроме JIT такая операция еще и GC нагружает по самое нихочу.
Re: Опять веб-приложения
От: WFrag США  
Дата: 03.09.08 03:19
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>2. Гугль таки делает свой браузер на основе WebKit — Google Chrome. Броузер будет включать в себя новую ВМ для JavaScript под названием V8 (немецкая разработка). Одна из причин его создания — малая приспособленность современных броузеров к исполнению web-приложений. На самом гугле о броузере есть комиксы. И нашлись не ленивые люди, сделавшие перевод комиксов на русский.


Хмм.. Ещё Firebug к нему, версию под Linux и, похоже, будет отличный браузер.

По крайней мере, для меня в нём куча полезных фич. Быстрый JS, большая независимость между табами..

P.S. Posted by Google Chrome (:
Re[4]: Опять веб-приложения
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.09.08 03:43
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Если ты не можешь сказать "вот этот slot содержит только значения типа int" то

CS>этот slot (variable) есть просто именованная typeless переменная.
А какие проблемы так сказать?
Как только мы кладем в этот слот что-то не инт, мы просто обсолетим проджиттенный код. Делов-то.

CS>Нет там никакой ни сильной ни слабой типизации.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: Опять веб-приложения
От: Курилка Россия http://kirya.narod.ru/
Дата: 03.09.08 05:17
Оценка:
Здравствуйте, WFrag, Вы писали:

[cut]

WF>По крайней мере, для меня в нём куча полезных фич. Быстрый JS, большая независимость между табами..


А можно пояснить выделенное — это как?
Re[3]: Опять веб-приложения
От: Mamut Швеция http://dmitriid.com
Дата: 03.09.08 06:34
Оценка:
WF>>По крайней мере, для меня в нём куча полезных фич. Быстрый JS, большая независимость между табами..

К>А можно пояснить выделенное — это как?


http://www.rsdn.ru/forum/message/3086930.1.aspx
Автор: Mamut
Дата: 02.09.08

— каждая закладка будет этаким отдельным браузером. Если что-то сломается, то упавшая закладка не повлечет за собой паение всего браузера

— браузер будет включать в себя Chrome Process Browser, который сможет указать, что именно тормозит/потребляет слишком много ресурсов и позволт это убить



dmitriid.comGitHubLinkedIn
Re[5]: Опять веб-приложения
От: c-smile Канада http://terrainformatica.com
Дата: 03.09.08 07:04
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, c-smile, Вы писали:


CS>>Если ты не можешь сказать "вот этот slot содержит только значения типа int" то

CS>>этот slot (variable) есть просто именованная typeless переменная.
S>А какие проблемы так сказать?
S>Как только мы кладем в этот слот что-то не инт, мы просто обсолетим проджиттенный код. Делов-то.

Я тогда не понял что ты считаешь JITом.
Я так понимаю что в твоей интерпретации JIT это нечто наделенное супер-интеллектом.

Допустим есть такой код:

for( var i = 0; i < 10; ++i )
  count += 1;


Где count это global value.

Ты в принципе можешь отJITить вот это (var i = 0; i < 10; ++i) ибо здесь локальная переменная — может быть представлена как int в процессоре.
Но для count += 1 тебе уже этого сделать нельзя так как variable storage не может быть приведен к типу int
по определению самого языка. Т.е. результат твоего jit это будет в общем случае последоватльность
неких нативных function calls что в общем случае не сильно эффективне чем интерпретация байткода.

Т.е. на тестовых задачах ты в принципе можешь получить выигрыш но в реальном Web code... сильно сомневаюсь в стоимости выделки той овчинки.
В JS оптимизация должна быть не в байткода а именно runtime — состава и качества нативных функций.
Самая лучшая оптимизация это делать так чтобы меньше этого самого байткода писать и исполнять надо было.

В качестве примера: работа со строками в стиле генерации html source.
Я ввел понятие stream в JS:

var st = Stream.openString(); // in-memory stream.
st << "Something" << "anything"; // stream output.

Stream это высоко-эффективный StringBuilder если хочешь. В процессе работы он не использует GC heap.
Значит не нужно лишних GC cycles — одно это уже перебьет все что ты выиграешь на JIT.

Примерно так.
Re[6]: Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 03.09.08 07:42
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Я тогда не понял что ты считаешь JITом.

CS>Я так понимаю что в твоей интерпретации JIT это нечто наделенное супер-интеллектом.

Ну, я ж не зря написал, что исходная идея как в HotSpot. А HotSpot ноги растут из динамического транслятора для Self. (Его переделали с начала под Smalltalk потом под Java). Напомню, что JavaScript прототипный как и Self.

Основная идея — до 90% call sites мономорфны
Автор: Andrei N.Sobchuck
Дата: 13.06.06
. Это значит что можно соптимизировать код исходя из известных типов параметров (информация о типах накапливается во время выполнения) и деоптимизировать если приходит "плохой" тип.

Судя по Комиксу у V8 неонка послабее. Выглядит будто они взяли интерпритатор ST и сделали компилятор из JavaScript в байткоды.
http://www.smalltalk.ru << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[5]: Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 03.09.08 07:42
Оценка:
Здравствуйте, __SPIRIT__, Вы писали:

ANS>>Имхо это они мимо тазика. Как и java-applets в своё время. Выход IE9 покажет


__S>Аргументы за хромую кобылу в студию!


Жизнь так развивается. В общем, ждём в ближайшее время объявления, что IE8.1 или IE8 будет поддерживать крутезный JavaScript сделанный на основе .Net.
http://www.smalltalk.ru << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[6]: Опять веб-приложения
От: Sinclair Россия https://github.com/evilguest/
Дата: 03.09.08 08:32
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Я тогда не понял что ты считаешь JITом.

CS>Я так понимаю что в твоей интерпретации JIT это нечто наделенное супер-интеллектом.
Нет, тупая штука с умениями выполнять спекулятивную оптимизацию.

CS>Ты в принципе можешь отJITить вот это (var i = 0; i < 10; ++i) ибо здесь локальная переменная — может быть представлена как int в процессоре.

CS>Но для count += 1 тебе уже этого сделать нельзя так как variable storage не может быть приведен к типу int
CS>по определению самого языка.
Ну почему же не может. Это же не global storage, это window.count.
Теперь такая штука возникает: мы выполняем спекулятивную оптимизацию, так что window.count+=1 превращается в
(window->knownVariables.count)+=1.
Этот байткод джиттится в натив, который по перформансу очень близок к, грубо говоря, С++ аналогу.
Как только кто-то присваивает в window.count не-инт, мы обсолетим сгенерированный код и откатываемся к старой байткодной версии, в которой было setMember(window, "count", getMemberAsInt(window, "count")+1).
Но фишка в том, что в корректно написанном веб-приложении такое бывает очень редко. Какой-нибудь behavior анимированной подсветки текущей строки в таблице выполняется сотни тысяч раз за время жизни экземпляра приложения, и при этом все типы всех объектов остаются теми же самыми.

CS>В качестве примера: работа со строками в стиле генерации html source.

CS>Я ввел понятие stream в JS:

CS>var st = Stream.openString(); // in-memory stream.

CS>st << "Something" << "anything"; // stream output.

CS>Stream это высоко-эффективный StringBuilder если хочешь. В процессе работы он не использует GC heap.

CS>Значит не нужно лишних GC cycles — одно это уже перебьет все что ты выиграешь на JIT.
Ну, я не настолько хорошо знаю движки, чтобы аргументированно рассуждать на тему GC vs JIT. Но пока что мне непонятно, почему нельзя применить приемы, хорошо зарекомендовавшие себя для статических языков, к языкам динамическим.
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[6]: Опять веб-приложения
От: Кэр  
Дата: 03.09.08 10:10
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Здравствуйте, __SPIRIT__, Вы писали:


ANS>>>Имхо это они мимо тазика. Как и java-applets в своё время. Выход IE9 покажет

__S>>Аргументы за хромую кобылу в студию!
ANS>Жизнь так развивается. В общем, ждём в ближайшее время объявления, что IE8.1 или IE8 будет поддерживать крутезный JavaScript сделанный на основе .Net.

Про жизнь мощно задвинуто. Но вопрос остается в силе — зачем мне javascript после релиза Silverlight? Всю клиентскую логику после этого можно реализовывать на C#, сохраняя кросс-вызовы со старыми js-функциями — дабы не пришлось переписывать все с нуля.
Это настолько же мощный ход, как выход .Net на десктопах/серверах, когда была сделана удобная поддержка вызовов C++ кода. Только в случае Silverlight все еще проще.
Re[4]: Опять веб-приложения
От: Кэр  
Дата: 03.09.08 10:14
Оценка:
Здравствуйте, WFrag, Вы писали:

WF>Падение одного таба в FF приводит к падению всего браузера.

WF>Утечки памяти в одном табе и фрагментация памяти из-за них распространяется на все табы (надо перезапускать браузер при продолжительной работе с JS-приложениями).
WF>Тормоза JS в одном табе подвешивают весь браузер.
WF>Это то, что для меня наиболее критично.

Тогда определенно стоит взглянуть на IE8. Там это все есть.
Плюс есть возможность управлять информацией, которая уходит с браузера. Например, affiliate cookies, которые помогают следить за перемещениями в интернете. Гугл удавится прежде чем подобную функциональность реализует Это то, что для меня наиболее критично.
Re[5]: Опять веб-приложения
От: WFrag США  
Дата: 03.09.08 11:48
Оценка:
Здравствуйте, Кэр, Вы писали:

Кэр>Тогда определенно стоит взглянуть на IE8. Там это все есть.


Ну, когда он под линукс выйдет...

Вообще я смотрел его бетку, на ней Google Maps не работал. Всё-таки Google своей беткой очень хорошо выстрелил — практически всё работает.
Re[6]: Опять веб-приложения
От: Сергей  
Дата: 03.09.08 11:57
Оценка:
Здравствуйте, WFrag, Вы писали:

WF>Например, перетаскивание табов. Сделано, на мой взгляд, просто отлично.


Насколько я помню, в Safari в точности так же.
Re[6]: Опять веб-приложения
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 03.09.08 12:56
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

__S>>Аргументы за хромую кобылу в студию!


ANS>Жизнь так развивается.


Неплохой аргумент.

ANS> В общем, ждём в ближайшее время объявления, что IE8.1 или IE8 будет поддерживать крутезный JavaScript сделанный на основе .Net.


Зачем ждать? Оно уже есть. Называется, как несложно догадаться, Silverlight.
... << RSDN@Home 1.2.0 alpha 4 rev. 1106 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[7]: Опять веб-приложения
От: fmiracle  
Дата: 03.09.08 12:59
Оценка:
Здравствуйте, Сергей, Вы писали:

WF>>Например, перетаскивание табов. Сделано, на мой взгляд, просто отлично.


Да они там на каждом шагу говорят, что позаимствовали у других хорошие идеи, уже себя зарекомендовавшие...
Re[7]: Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 03.09.08 13:49
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:
ANS>Ну, я ж не зря написал, что исходная идея как в HotSpot. А HotSpot ноги растут из динамического транслятора для Self. (Его переделали с начала под Smalltalk потом под Java). Напомню, что JavaScript прототипный как и Self.

Кстати, эта самая ВМ для St разрабатывалась фирмой Animorphic сейчас это Strongtalk.

ANS>Судя по Комиксу у V8 неонка послабее. Выглядит будто они взяли интерпритатор ST и сделали компилятор из JavaScript в байткоды.

Похоже, я угадал. Ведущий разработчик V8 — Lars Back. Который и разрабатывал Strongtalk и Java HotSpot (напомню, что основа HotSpot из Strongtalk), а потом склепал ВМ St для запуска на голом железе. Но, естественно, это не ВМ от St, а именно ВМ для JS (из особенностей, например, слоты в объекте JS часто добавляются/удаляются, тогда как структура объектов в St статична).
http://www.smalltalk.ru << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[6]: Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 03.09.08 13:54
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Я тогда не понял что ты считаешь JITом.


Кстати, ты уже "про это
Автор: Andrei N.Sobchuck
Дата: 16.12.05
" даже оценку ставил
http://www.smalltalk.ru << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re: Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 03.09.08 14:29
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>1.


ANS>2.


3. Safari 4 тоже обзаведётся новым движком (ВМ) для JS &mdash; SquirrelFish.

Опубликовано несколько бенчмарков для теста производительности JS. Высокую производительность V8 подтверждаю. Есть кусок JavaScript из реального приложения который работал ~1 мин 15 сек. В GoogleChrome это заняло ~5 сек. Ну, и "JavaScript реализации Ruby, выполненная в V8 VM, оказалась быстрее интерпретатора Ruby".

Мне последние новости решительно нравятся

ANS>ЗЫ. Похоже, что IE8 &mdash; ничем интересным порадовать не сможет
http://www.smalltalk.ru << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[7]: Опять веб-приложения
От: Mamut Швеция http://dmitriid.com
Дата: 03.09.08 14:34
Оценка:
С>Насколько я помню, в Safari в точности так же.

Вообще пока Chrome — это правильный Сафари для Windows.Вытеснить Сафари с Маков или сколько-либо пошатнуть Сафари на маках Хрому вряд ли удастся


dmitriid.comGitHubLinkedIn
Re[2]: Опять веб-приложения
От: Mamut Швеция http://dmitriid.com
Дата: 03.09.08 14:38
Оценка:
ANS> Ну, и "JavaScript реализации Ruby, выполненная в V8 VM, оказалась быстрее интерпретатора Ruby".

На некоторых тестах


dmitriid.comGitHubLinkedIn
Re[7]: Опять веб-приложения
От: c-smile Канада http://terrainformatica.com
Дата: 03.09.08 21:26
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Здравствуйте, c-smile, Вы писали:


CS>>Я тогда не понял что ты считаешь JITом.

CS>>Я так понимаю что в твоей интерпретации JIT это нечто наделенное супер-интеллектом.
S>Нет, тупая штука с умениями выполнять спекулятивную оптимизацию.

CS>>Ты в принципе можешь отJITить вот это (var i = 0; i < 10; ++i) ибо здесь локальная переменная — может быть представлена как int в процессоре.

CS>>Но для count += 1 тебе уже этого сделать нельзя так как variable storage не может быть приведен к типу int
CS>>по определению самого языка.
S>Ну почему же не может. Это же не global storage, это window.count.
S>Теперь такая штука возникает: мы выполняем спекулятивную оптимизацию, так что window.count+=1 превращается в
S>(window->knownVariables.count)+=1.
S>Этот байткод джиттится в натив, который по перформансу очень близок к, грубо говоря, С++ аналогу.
S>Как только кто-то присваивает в window.count не-инт, мы обсолетим сгенерированный код и откатываемся к старой байткодной версии, в которой было setMember(window, "count", getMemberAsInt(window, "count")+1).
S>Но фишка в том, что в корректно написанном веб-приложении такое бывает очень редко. Какой-нибудь behavior анимированной подсветки текущей строки в таблице выполняется сотни тысяч раз за время жизни экземпляра приложения, и при этом все типы всех объектов остаются теми же самыми.

Я честно говоря не понимаю как образуется этот твой window->knownVariables.count

  var o = {};
  Object.prototype.count = 1;
  
  o.count += 1;
  o["count"] += 1;

  alert(o.count);


alert выведет 3 здесь по правилам JS.

Что может JIT здесь сделать?
В момент исполнения o.count += 1; такой переменной (слота) вообще нет.

CS>>Stream это высоко-эффективный StringBuilder если хочешь. В процессе работы он не использует GC heap.

CS>>Значит не нужно лишних GC cycles — одно это уже перебьет все что ты выиграешь на JIT.
S>Ну, я не настолько хорошо знаю движки, чтобы аргументированно рассуждать на тему GC vs JIT. Но пока что мне непонятно, почему нельзя применить приемы, хорошо зарекомендовавшие себя для статических языков, к языкам динамическим.

Я же не о том что нельзя применять. Можно конечно.
Я о другом — насколько эффектвен JIT на тех реальных задачах на которых используется JS?
RayTracing на JS делать... как бы помягче сказать...
Re[8]: Бенчмарки
От: Mamut Швеция http://dmitriid.com
Дата: 04.09.08 09:03
Оценка:
Решил закинуть бенчмарки в эту подветку.

Сссылка вот: http://ejohn.org/blog/javascript-performance-rundown/

V8 в основном направлен на оптиизацию рекурсии
TraceMonkey пока рекурсию не оптимизирует

И в качестве холивара: видно, что на МакОСи Хрому делать нечего. Сафари отстает от него/опережает его ровно в пределах статистической погрешности


dmitriid.comGitHubLinkedIn
Re[9]: Бенчмарки
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 04.09.08 12:09
Оценка:
Здравствуйте, Mamut, Вы писали:

M>И в качестве холивара: видно, что на МакОСи Хрому делать нечего. Сафари отстает от него/опережает его ровно в пределах статистической погрешности


Из этих тестов нужно вычленить работу с DOM (как не подлежащую оптимизации этими ВМ).

И я уже говорил, что имеющаяся под рукой килотона javascript, которая в Safari работала 1 мин 15 сек, в V8 отработала за 5 сек. А Safari, в свою очередь, выполнял этот код заметно быстрее FF2 (про IE вообще молчу). И вообще, есть места где вагоны JS — эти части по сравнению с Safari стали гораздо быстрее. Другое дело, что у Safari тоже новый движок JavaScript...

Только замечу, что на GC с FF3 перелазить не буду — у меня в FF есть куча плагинов, без которых я не представляю себе лазанье по I-Net.
http://www.smalltalk.ru << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[7]: Опять веб-приложения
От: Кодт Россия  
Дата: 04.09.08 13:34
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Зачем ждать? Оно уже есть. Называется, как несложно догадаться, Silverlight.


Дак фокус-то в том, что silverlight есть именно у микрософта.
Чтобы пользователю настало щасте, надо, чтобы
1) браузер поддерживал
2) сайт был сделан

А пока что подавляющее большинство веб-приложений — на флеше и яваскрипте. Так что придётся ждать.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111>>
Перекуём баги на фичи!
Re[8]: Опять веб-приложения
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 04.09.08 13:55
Оценка:
Здравствуйте, Кодт, Вы писали:

К>Дак фокус-то в том, что silverlight есть именно у микрософта.


Есть еще Moonlight у Mono.

К>Чтобы пользователю настало щасте, надо, чтобы

К>1) браузер поддерживал

IE, FF, Safari поддерживают. Оперой можно принебречь.

К>А пока что подавляющее большинство веб-приложений — на флеше и яваскрипте. Так что придётся ждать.


Но вариант, когда у тебя приложение работает только на Chrome еще хуже.
... << RSDN@Home 1.2.0 alpha 4 rev. 1106 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[9]: Опять веб-приложения
От: Курилка Россия http://kirya.narod.ru/
Дата: 04.09.08 14:00
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Здравствуйте, Кодт, Вы писали:


К>>А пока что подавляющее большинство веб-приложений — на флеше и яваскрипте. Так что придётся ждать.


AVK>Но вариант, когда у тебя приложение работает только на Chrome еще хуже.


А что, есть прецеденты?
Re[11]: Опять веб-приложения
От: Кэр  
Дата: 04.09.08 14:05
Оценка:
Здравствуйте, Mamut, Вы писали:

M>Не думаю, что его вообще кто-то скачал Всю инфу показывали по телевизору


Ух, какой вы динозавр Какой там телевизор. Он умеет Фелпса показывать по заказу столько раз подряд, сколько захочет пользователь?

Вот несколько кусочков данных (цитата из письма массовой внутренней рассылки):
· Thanks to effectively integrated promotion on MSN.com and other Microsoft properties, NBCOlympics on MSN is the #1 Olympics website in the US, with over 25% more UUs than Yahoo’s Olympics site, according to NNR

· With over half a billion PVs and 30M UUs in August we've already surpassed the total pageviews and unique users NBC recorded for the entire Torino and Athens Games COMBINED

· Time spent on site has been averaging over 15 minutes, almost 3x the engagement of the closest competitors (see graph below)

· We’ve streamed over 260 million minutes of video – six times more video than the NBC’s total for the prior two Olympics. The Men's 4x100 Relay swim from Sunday night alone has more than 2 million streams

· NBCOlympics on MSN has had more video streams than all of MSN Video in the US on three days in the last week

· MSN Homepage: Our first two days of data shows that the Olympic Module has engaged users at a higher rate than any other editorial module, without harming other editorial modules or the page as a whole. Olympic module performance is increasing the overall editorial clickthrough rate on the page, showing that Olympic clicks are incremental and not taking traffic from any other areas of the page

· Silverlight: NBCOlympics on MSN has driven millions of downloads of Silverlight 2

А вы там "думаю никто там не скачал", "есть телевизор"...
Re[11]: Опять веб-приложения
От: Cyberax Марс  
Дата: 04.09.08 14:37
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Это к вопросу о том, что Гугль сказал какое то новое слово в разработке веб-приложений при помощи Chrome. Тут одно из двух — либо он ничего нового, кроме улучшенной производительности, не предлагает, тогда ничего особенного и не произошло, либо там появляются какие то новые возможности, но это автоматом ограничивает приложения, которые их используют, исключительно хромом.

Опять же, тут возможны полутона. Например, Google Gears работает (в виде плугина) на всех браузерах. Но на Chrome оно будет работать быстрее.
Sapienti sat!
Re[12]: Опять веб-приложения
От: Кэр  
Дата: 04.09.08 14:43
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Опять же, тут возможны полутона. Например, Google Gears работает (в виде плугина) на всех браузерах. Но на Chrome оно будет работать быстрее.


Кстати да. А где вообще эти Гирз используются? Я про них в последний раз слышал давно так — в момент их релиза. После этого они подернулись забвением. Даже сайты гугла не требуют установки этого плагина.
С остальными сайтами все понятно — там требуется код переписывать, чтобы заюзать возможности шестеренок. А при поддержке javascript'a как платформы — Гуглу мало светит затянуть много разработчиков под переписывание, чтобы набрать критическую массу для распространения плагина.
Re[9]: Jit для динамических языков
От: Mamut Швеция http://dmitriid.com
Дата: 04.09.08 15:33
Оценка:
Z>Ну давайте поставим эксперимент. Возьмем пару динамически типизированных языков для которых есть jit и посмотрим.
Z>Задача: 10 миллионов раз добавить к полю `count' hash-таблицы `t' единицу.

В этом тесте легко вычислить тип изменяемоу переменной. В реальных яваскриптовых приложениях гораздо больше работы с DOM'ом. Интересно, как сможет помочь там JIT


dmitriid.comGitHubLinkedIn
Re[10]: Jit для динамических языков
От: Cyberax Марс  
Дата: 04.09.08 15:34
Оценка:
Здравствуйте, Mamut, Вы писали:

Z>>Задача: 10 миллионов раз добавить к полю `count' hash-таблицы `t' единицу.

M>В этом тесте легко вычислить тип изменяемоу переменной. В реальных яваскриптовых приложениях гораздо больше работы с DOM'ом. Интересно, как сможет помочь там JIT
В V8 выводятся типы DOM-объектов.
Sapienti sat!
Re[9]: Jit для динамических языков
От: c-smile Канада http://terrainformatica.com
Дата: 04.09.08 16:15
Оценка:
Здравствуйте, z00n, Вы писали:

Эти два фрагмента:

LUA:

Z>
Z>--// jit-test.lua

Z>local t = {count = 0}

Z>for i=1,1E7 do
Z>    t.count = t.count + 1
Z>end

Z>print(t.count)
Z>


JS/TIScript:

Z>
Z>// jit-test.tis

Z>var t = {count:0};
Z>for(var i = 0; i < 10000000; ++i){
Z>   t.count += 1;
Z>}

Z>stdout.printf("%d\n",t.count)
Z>


Z>
Z>$ time ./tis jit-test.tis
Z>10000000

Не эквивалентны в том смысле что local t (LUA) в JS записывается следующим образом:

[code]
{
  var t = {count:0};
  for(var i = 0; i < 10000000; ++i){
    t.count += 1;
  }
  stdout.printf("%d\n",t.count);
}


т.е. ты тестировал на самом деле следующий вариант:

$global.t = {count:0};
for(var i = 0; i < 10000000; ++i){
   $global.t.count += 1;
}
stdout.printf("%d\n",t.count);


что как ты понимаешь несколько иной компот.

Постарраюсь проверить сегодня цифры твоего теста. Что-то меня смущает. На моей рабочей машине этот тест исполняется 1.6 сек
(последний TIScript с googlecode).

Ну и по делу. Что-то мне говорит что даже если JIT на реальных задачах поднимет быстродействие в два раза то
пользователи этого не заметят. Я честно говоря не видел сайтов для которых JS это bottleneck.
Есть у кого примеры?
Re[11]: Jit для динамических языков
От: c-smile Канада http://terrainformatica.com
Дата: 04.09.08 16:52
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, Mamut, Вы писали:


Z>>>Задача: 10 миллионов раз добавить к полю `count' hash-таблицы `t' единицу.

M>>В этом тесте легко вычислить тип изменяемоу переменной. В реальных яваскриптовых приложениях гораздо больше работы с DOM'ом. Интересно, как сможет помочь там JIT
C>В V8 выводятся типы DOM-объектов.

О как...

Что такое "выводятся типы" и "типы DOM-объектов" в твоем понимании?

Надеюсь структура DOM и состав CSS атрибутов там не "выводится" (whatever it means).

А вообще я слабо понимаю как можно "вывести" вызов native function в JS.
Передача управления в native function означает что весь твой JIT тазиком медным накрывается
ибо native function может например сам себя удалить.
Re[3]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.09.08 17:17
Оценка:
Здравствуйте, nikov, Вы писали:

CS>>JIT для typeless языков это технический non-sense.


N>Во-первых, JavaScript — это не typeless язык, а динамически типизированный язык со слабой типизацией.


Да, да. В лоб и полбу — это не одно и тоже. Это просто одинаковые действия с одинаковым результатом.

N>Во-вторых, взгляни на IronPython (который работает на .NET и, соответственно, использует дотнетовский JIT)


IronPython — это голимый интерпретатор совместимый с дотнетом только в одном направлении.

В общем, поддерживаю c-smile. Тем более, что кому как не ему знать в этом толк. Он ведь вроде сам интерпретатор писал.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.09.08 17:27
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Ну, я ж не зря написал, что исходная идея как в HotSpot. А HotSpot ноги растут из динамического транслятора для Self. (Его переделали с начала под Smalltalk потом под Java). Напомню, что JavaScript прототипный как и Self.


Проблема только в том, что толку от HotSpot удалось добиться только в Яве. Хотя Смолтоковцы и кричат о крутости HotSpot-а для Смолтока, но кроме криков ничего серьезного предъявить не могут.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.09.08 17:28
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Кстати, эта самая ВМ для St разрабатывалась фирмой Animorphic сейчас это Strongtalk.


Объясни, плиз, окружающим что означает "Strong" в названии "Strongtalk". А потом поговорим дальше... если желание к тому времени не отпадет само собой.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 04.09.08 17:34
Оценка:
Здравствуйте, c-smile, Вы писали:

Согласен со всем сказанным.

На мой взгляд решение — это переход от разработки на скриптах обратно к идее аплетов создаваемых для ВМ вроде Явы или дотнета.

МС вроде бы даже для этого сделал WPF, но что-то снова заколбасило в МС и вместо того чтобы сделать переносимую коммерческую машину дотнета для всех ведущих платформ их снова поперло к скриптам и копированию чужих идей (это я про Силверлайт и его прототип Флэш).

Явщики революцию похоже вообще проспали...
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Jit для динамических языков
От: z00n  
Дата: 04.09.08 17:35
Оценка:
Здравствуйте, c-smile, Вы писали:
CS>Не эквивалентны в том смысле что local t (LUA) в JS записывается следующим образом:
CS> var t = {count:0};
CS>т.е. ты тестировал на самом деле следующий вариант:
CS>$global.t = {count:0};
CS>что как ты понимаешь несколько иной компот.


Это, наверное, моя опечатка:
bash$ cat jit-test.tis
// jit-test.tis -- TScript

var t = {count:0};
for(var i = 0; i < 10000000; ++i){
   t.count += 1;
}

stdout.printf("%d\n",t.count)
bash$ time tiscript jit-test.tis
10000000

real    0m7.177s
user    0m0.031s
sys    0m0.000s


CS>Постарраюсь проверить сегодня цифры твоего теста. Что-то меня смущает. На моей рабочей машине этот тест исполняется 1.6 сек

CS>(последний TIScript с googlecode).
Я на архаичной машине (AthlonXP c медленной памятью) тестировал, так-что относительные цифры должны быть верными.
Spidermonkey, кстати, медленнее еще в два раза.


CS>Ну и по делу. Что-то мне говорит что даже если JIT на реальных задачах поднимет быстродействие в два раза то

CS>пользователи этого не заметят. Я честно говоря не видел сайтов для которых JS это bottleneck.
CS>Есть у кого примеры?
Во первых, пока java-script, будет тормозом все будут избегать писать на нем что-то интересное, но прецеденты есть:
http://www.flapjax-lang.org/
Всякие большие библиотеки вроде script.aculo.us или Dojo Toolkit — наверняка.
Re[6]: Опять веб-приложения
От: c-smile Канада http://terrainformatica.com
Дата: 04.09.08 17:41
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, Sinclair, Вы писали:


S>>Как только мы кладем в этот слот что-то не инт, мы просто обсолетим проджиттенный код. Делов-то.


VD>Проблемы очевидные. Есть вывод типов и языки под него заточенные. В них можно добиться отсутсвия явной типизации и при этом наличие полной информации о типах. А есть скрипы которые конечно позволяют в некоторых местах вывести типы, но они не проектировались для этих целей и в результате не позволяют добиться серьезного повышения производительности и надежности. Это демонстрируют и PyPy для Питона, и ХотСпот для Смортока, и все потуги в области оптимизации ЯваСкрипта.


В принципе JavaScript2 (ActionScript/flash) добавил типизацию в JS.

Т.е. вот на это:

var i:int = 0;
i += 1;


действительно можно напустить JIT который будет эффективно работать т.е. a) быстро производить native code и b) быстро его исполнять.
Кстати пункт "a" не менее важен чем пункт "b" в свете наличия атрибутов onclick или onmouseenter в DOM.
Re[11]: Jit для динамических языков
От: c-smile Канада http://terrainformatica.com
Дата: 04.09.08 18:29
Оценка:
Здравствуйте, z00n, Вы писали:

Z>Здравствуйте, c-smile, Вы писали:

CS>>Не эквивалентны в том смысле что local t (LUA) в JS записывается следующим образом:
CS>> var t = {count:0};
CS>>т.е. ты тестировал на самом деле следующий вариант:
CS>>$global.t = {count:0};
CS>>что как ты понимаешь несколько иной компот.

Z>Это, наверное, моя опечатка:

Z>
Z>bash$ cat jit-test.tis
Z>// jit-test.tis -- TScript

Z>var t = {count:0};
Z>for(var i = 0; i < 10000000; ++i){
Z>   t.count += 1;
Z>}

Z>stdout.printf("%d\n",t.count)
Z>bash$ time tiscript jit-test.tis
Z>10000000

Z>real    0m7.177s
Z>user    0m0.031s
Z>sys    0m0.000s
Z>


Ты не понял. Вот это:
var t;

в JS в зависимости от контекста это либо global t в LUA либо local t.
То как ты объявил это дело это именно global t (т.е. slot в global table в терминах LUA)
А вот так:
{ var t; }

эта t будет уже local t для этого блока. Доступ к local variables в lua и tiscript должен быть примерно равнозначным +/- оптимизируещие опции С++ компилятора. Ибо доступ к local variables это фактически frame[varidx] где varidx это константа расчитываемая в момент компиляции.


CS>>Ну и по делу. Что-то мне говорит что даже если JIT на реальных задачах поднимет быстродействие в два раза то

CS>>пользователи этого не заметят. Я честно говоря не видел сайтов для которых JS это bottleneck.
CS>>Есть у кого примеры?
Z>Во первых, пока java-script, будет тормозом все будут избегать писать на нем что-то интересное, но прецеденты есть:
Z>http://www.flapjax-lang.org/
Z>Всякие большие библиотеки вроде script.aculo.us или Dojo Toolkit — наверняка.

Вот тесты более менее приближенные к реальности: http://v2.dromaeo.com/
Результаты не особенно впечатляют, сравнивал Chrome и FF3.
Где-то быстрее Chrome где-то FF3.
Например на операциях DOM Query типа getElementsByTagName FF3 впереди планеты всей.
А на операциях типа base64 encoding (в скрипте) Chrome в два раза быстрее.
Но в то же время на операциях работы с массивами (splice shift и пр.) FF3 в два раза быстрее.
Ну т.е. так на так выходит. Как я уже говорил — основная оптимизация в JS это не исполнение байткода самого а именно эффективность и состав native функций. Это то что работает most of the time.
Re[9]: Опять веб-приложения
От: c-smile Канада http://terrainformatica.com
Дата: 04.09.08 18:40
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, c-smile, Вы писали:


VD>Согласен со всем сказанным.


VD>На мой взгляд решение — это переход от разработки на скриптах обратно к идее аплетов создаваемых для ВМ вроде Явы или дотнета.


VD>МС вроде бы даже для этого сделал WPF, но что-то снова заколбасило в МС и вместо того чтобы сделать переносимую коммерческую машину дотнета для всех ведущих платформ их снова поперло к скриптам и копированию чужих идей (это я про Силверлайт и его прототип Флэш).


VD>Явщики революцию похоже вообще проспали...


Имею возможность наблюдать online приложение которое существует одновременно в двух ипостасях — как Java Applet и как Web2 приложение (ASP.NET + Ajax). Очень навороченное. Основная проблема в том что пользователи не хотят уходить с Java. Java Applet тактильно работает на порядок быстрее.
Ну собственно и не мудрено — UI доставляется один раз на клиента — потом только данные туда сюда ходят.
Re[12]: Jit для динамических языков
От: z00n  
Дата: 04.09.08 19:11
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Здравствуйте, z00n, Вы писали:


Z>>Здравствуйте, c-smile, Вы писали:

CS>>>Не эквивалентны в том смысле что local t (LUA) в JS записывается следующим образом:
CS>>> var t = {count:0};
CS>>>т.е. ты тестировал на самом деле следующий вариант:
CS>>>$global.t = {count:0};
CS>>>что как ты понимаешь несколько иной компот.

Z>>Это, наверное, моя опечатка:

Z>>
Z>>bash$ cat jit-test.tis
Z>>// jit-test.tis -- TScript

Z>>var t = {count:0};
Z>>for(var i = 0; i < 10000000; ++i){
Z>>   t.count += 1;
Z>>}

Z>>stdout.printf("%d\n",t.count)
Z>>bash$ time tiscript jit-test.tis
Z>>10000000

Z>>real    0m7.177s
Z>>user    0m0.031s
Z>>sys    0m0.000s
Z>>


CS>Ты не понял. Вот это:

CS>
CS>var t;
CS>

CS>в JS в зависимости от контекста это либо global t в LUA либо local t.
CS>То как ты объявил это дело это именно global t (т.е. slot в global table в терминах LUA)
CS>А вот так:
CS>
CS>{ var t; }
CS>

CS>эта t будет уже local t для этого блока. Доступ к local variables в lua и tiscript должен быть примерно равнозначным +/- оптимизируещие опции С++ компилятора. Ибо доступ к local variables это фактически frame[varidx] где varidx это константа расчитываемая в момент компиляции.

Как все сложно Теперь правильно? Минус 1.5 секунды — мне кажется непринципиально, разница все равно в разы.
bash$ cat jit-test.tis
// jit-test.tis -- TScript
{
    var t = {count:0};
    for(var i = 0; i < 10000000; ++i){
        t.count += 1;
    }

    stdout.printf("%d\n",t.count);
}

bash$ time tiscript jit-test.tis
10000000

real    [b]0m6.056s[]
user    0m0.015s
sys    0m0.031s
bash$


Хотел V8 протестировать — проклятый scons не хочет собирать.
Re[13]: Jit для динамических языков
От: z00n  
Дата: 04.09.08 20:18
Оценка:
Здравствуйте, z00n, Вы писали:
Z>Хотел V8 протестировать — проклятый scons не хочет собирать.

Потестировал — очень быстро, между Neko и Luajit. Т.е. они не врут (я еше пару примеров посмотрел) — на вычислительных тестах V8 на порядок быстрее Spidermonkey, проимерно раз в 5-6 медленнее С.
Re[6]: Опять веб-приложения
От: z00n  
Дата: 04.09.08 20:26
Оценка:
Здравствуйте, VladD2, Вы писали:
VD>Скрипты используют идиомы вроде "ООП на безе прототипов" которые принципиальноне совместимы с компиляцией в нэйтив-код.

Есть такой малоизвестный язык Lisaac (http://en.wikipedia.org/wiki/Lisaac). Он prototype-based как Self, и при этом бескомпромиссно быстрый, как С.
Re[13]: Jit для динамических языков
От: c-smile Канада http://terrainformatica.com
Дата: 04.09.08 21:09
Оценка:
Здравствуйте, z00n, Вы писали:

Проверил под Windows

LUA:

local t = {count = 0}
for i=1,1E7 do
    t.count = t.count + 1
end
print(t.count)


TIScript:

{
  var t = {count:0};
  for(var i=0; i < 10000000; ++i)
    ++t.count;
  stdout.printf("%d\n",t.count);    
}


Время (меньше-лучше)

LUA : 1016 ms
TIScript : 2515 ms (TIScript собран с optimize for speed) и 2641(с optimize for size))

Что в общем-то ожидаемо.
TIScript поддерживает property (что есть функции описанные в классе). Это привносит некий overhead при get/set property.
Re[10]: Бенчмарки
От: Mamut Швеция http://dmitriid.com
Дата: 05.09.08 06:43
Оценка:
CS>это я к тому что все свою цену имеет.

CS>Сам знаешь что на некоторых тестах C# уделывает С++. Но в реалии чудес не быват.


Мне вот во всех этих Яваскриптовых JIT'ах интересна на самом деле оптимизация рекурсии. Будем писать все в функциональном стиле?


dmitriid.comGitHubLinkedIn
Re[10]: Jit для динамических языков
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 05.09.08 07:55
Оценка:
Здравствуйте, c-smile, Вы писали:

CS>Есть у кого примеры?


Так потому и нет, что JS тормозит. А примеров будет больше.
http://www.smalltalk.ru << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[12]: Опять веб-приложения
От: Aikin Беларусь kavaleu.ru
Дата: 05.09.08 12:04
Оценка:
Здравствуйте, goorov, Вы писали:

G>добавляя в хром всякие обычные и необычные возможности для поддержки приложений (в первую очередь своих же), гугл неявно будет подстегивать разработчиков остальных браузеров более активно двигаться в том же направлении.

Даже более того, на одной из страниц коммикса очень подчеркивается что Хром -- опенсорс и если его фича понравится другим разработчикам браузеров они могут взять эту функциональность из Хрома.

Но я согласен с АндреемВК, что не нужно делать костыли хромой кобыле. HTML, CSS, Javascript должны умереть (никаких войн ).

СУВ, Aikin
Re[8]: Опять веб-приложения
От: z00n  
Дата: 05.09.08 12:51
Оценка:
Здравствуйте, c-smile, Вы писали:
CS>Кросс компиляция одного языка в С это еще не значит что итоговая скорость имплементации некоего алгоритма будет быстрее чем то же самое на голом C.
CS>Я с таким же успехом могу байткод сконвертирвать в C. Только это не великий смысл имеет. Архитектура объектов и памяти остается той же.
Я не понимаю, к чему вы про кросскомпиляцию, извините. Он по результатам тестов быстрый.
http://shootout.alioth.debian.org/gp4/benchmark.php?test=all&amp;lang=gcc&amp;lang2=lisaac
На оф-сайте есть сравнение скорости Мпег-декодеров на нем и С.
CS>И вообще чем оно такое в принципе отличается от Objective-C http://en.wikipedia.org/wiki/Objective-C#Dynamic_typing ?
Как язык — очень отличается, например классов нет, очень 'чистый', как Smalltalk. Бумаги там затруднительно читать — очень много французского .
Re[9]: Опять веб-приложения
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.09.08 13:45
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>МС вроде бы даже для этого сделал WPF


Нет. Упоминания Silverlight появились много позже упоминаний WPF (PDC 2003).

VD>, но что-то снова заколбасило в МС и вместо того чтобы сделать переносимую коммерческую машину дотнета для всех ведущих платформ их снова поперло к скриптам и копированию чужих идей (это я про Силверлайт и его прототип Флэш).


Silverlight 2.0 содержит внутри себя переносимый JIT-компилятор дотнета.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[2]: Опять веб-приложения
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 05.09.08 13:45
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Гугль пока что тоже ничем новым не порадовал. Его броузер, пока что — это просто новый ГУЙ для Мозилы 5.0


http://en.wikipedia.org/wiki/Webkit
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[3]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 05.09.08 17:40
Оценка:
Здравствуйте, AndrewVK, Вы писали:

VD>>Гугль пока что тоже ничем новым не порадовал. Его броузер, пока что — это просто новый ГУЙ для Мозилы 5.0


AVK>http://en.wikipedia.org/wiki/Webkit


И? Это хреть работать только в броузере Гугля? Нет? Тогда что нового привнес этот броузер?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.09.08 05:44
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Из крупного: новый механизм изоляции и самый оптимизированый JavaScript. Ну и по мелочам: удобные popup'ы, многофункциональный address bar, история сайтов и т.п.


Все это меньше чем ничто. В броузере важен основной движок и средства его программирования. Просто оптимизация скрипата — это шаг в неверном направлении.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[5]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.09.08 05:45
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>И то, что это не Мозилла.


Открой эбаут и почитай.

ЗЫ

Если бы это не был мозила, то он и работал бы далеко не так гладко.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.09.08 05:54
Оценка:
Здравствуйте, AndrewVK, Вы писали:

VD>>МС вроде бы даже для этого сделал WPF


AVK>Нет. Упоминания Silverlight появились много позже упоминаний WPF (PDC 2003).


И что? Это говорит только об одном. О неразумности политики МС в области поддержки Веба.

VD>>, но что-то снова заколбасило в МС и вместо того чтобы сделать переносимую коммерческую машину дотнета для всех ведущих платформ их снова поперло к скриптам и копированию чужих идей (это я про Силверлайт и его прототип Флэш).


AVK>Silverlight 2.0 содержит внутри себя переносимый JIT-компилятор дотнета.


Хорошо если так.

А какого хрена сразу было это не сделать?

К тому же важно, чтобы JIT-компилятор был бы быстрым и функциональным, а не урезанной версией. Я бы на месте МС подумал о переносе основного дотнета на базовые не Виндовс платформы, а не плодил бы проекты на право и на лево.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[10]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.09.08 05:58
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Не знаю. А что обозначает слово "morphic" в "Animorphic"? Если ты намекаешь на статические типы, то связи между статической типизацией и ВМ там нет.


Это чушь. Только наличие статической аннотации типов и дало возможность показывать Strongtalk хоть что-то отдаленно напоминающее результаты хороших компиляторов.

Другие оптимизации конечно для Strongtalk важны, но без типов это все были бы козьи потягушки.

В прочем, Strongtalk по любому с С не тягаться.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.09.08 06:01
Оценка:
Здравствуйте, Sinclair, Вы писали:

S>Ну почему — могут. Они добились впечатляющих результатов еще до того, как их позвали окучивать джаву.


Ничего они реально не добились. Потому IBM и свалил на Яву.

S>Просто сейчас смолток настолько невостребован, что никакой хотспот его не спасает.


Он всегда был неудел. От части из-за извращенческого синтаксиса, а от части из-за динамической типизации которая, скажем на писюках с 640 Кб, была просто издевательством.
Зато гонора и пафоса у приверженцев СТ было всегда через край.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[3]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 06.09.08 06:03
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>У МС для веб-приложений есть Silverlight. А подковывать в очередной раз хромую кобылу ...


А для Silverlight 2.0 можно будет писать код не на C#, а скажем на том же F# или Nemerle?
Другими словами, Silverlight 2.0 будет работать с МСИЛ-ом?
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[4]: Опять веб-приложения
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 06.09.08 09:52
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А для Silverlight 2.0 можно будет писать код не на C#, а скажем на том же F# или Nemerle?


Да.

VD>Другими словами, Silverlight 2.0 будет работать с МСИЛ-ом?


Да. Хуже того, он его даже не интерпретировать будет, а обрабатывать JIT-ом.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[11]: Опять веб-приложения
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 06.09.08 09:52
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А какого хрена сразу было это не сделать?


Изначально планировалось сразу, но, видать, не успевали к Олимпиаде.

VD>К тому же важно, чтобы JIT-компилятор был бы быстрым и функциональным, а не урезанной версией.


А вот это вряд ли, чудес не бывает.

VD> Я бы на месте МС подумал о переносе основного дотнета на базовые не Виндовс платформы


Зачем это им? На самом дотнете денег не заработаешь.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[5]: Опять веб-приложения
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 06.09.08 12:18
Оценка:
Здравствуйте, AndrewVK, Вы писали:

VD>>А для Silverlight 2.0 можно будет писать код не на C#, а скажем на том же F# или Nemerle?


AVK>Да.


А не получится ли, что F# и Nemerle требуют для работы свои сборки (FSharp.Core.dll, Nemerle.dll), которые не запихнешь в Silverlight по причине урезанности дотнета в последнем?
Re[6]: Опять веб-приложения
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 06.09.08 15:30
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>А не получится ли, что F# и Nemerle требуют для работы свои сборки (FSharp.Core.dll, Nemerle.dll), которые не запихнешь в Silverlight по причине урезанности дотнета в последнем?


Необходимые сборки спокойно скачиваются. Вопрос лишь в том, чтобы компилятор не порождал чего нибудь несвоместимого с упрощенным джитом.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[13]: Опять веб-приложения
От: Cyberax Марс  
Дата: 06.09.08 15:40
Оценка:
Здравствуйте, Кэр, Вы писали:

C>>Опять же, тут возможны полутона. Например, Google Gears работает (в виде плугина) на всех браузерах. Но на Chrome оно будет работать быстрее.

Кэр>Кстати да. А где вообще эти Гирз используются? Я про них в последний раз слышал давно так — в момент их релиза. После этого они подернулись забвением. Даже сайты гугла не требуют установки этого плагина.
В Google Reader (опционально) используются. Идеально подошли бы для веб-версии RSDN@Home
Sapienti sat!
Re[7]: Опять веб-приложения
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 06.09.08 17:16
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Необходимые сборки спокойно скачиваются.


Т.е. в silverlight можно скачать и заюзать произвольную сборку? Подозреваю, что должны быть ограничения и весьма жесткие..

AVK>Вопрос лишь в том, чтобы компилятор не порождал чего нибудь несвоместимого с упрощенным джитом.


И чтобы вышеупомянутые сборки не содержали подобного.
Re[8]: Опять веб-приложения
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 06.09.08 18:00
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Т.е. в silverlight можно скачать и заюзать произвольную сборку?


Да. Там, вроде бы, даже базовая библиотека не вся в дистрибутиве содержится.

DM> Подозреваю, что должны быть ограничения и весьма жесткие..


Жесткие ограничения есть даже при хостинге нормального дотнета в браузере (xbap).
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[6]: Опять веб-приложения
От: Cyberax Марс  
Дата: 06.09.08 18:31
Оценка:
Здравствуйте, VladD2, Вы писали:

C>>Из крупного: новый механизм изоляции и самый оптимизированый JavaScript. Ну и по мелочам: удобные popup'ы, многофункциональный address bar, история сайтов и т.п.

VD>Все это меньше чем ничто. В броузере важен основной движок и средства его программирования.
Это ОЧЕНЬ много. Особенно при нынешних расплодившихся malware'ах.

VD>Просто оптимизация скрипата — это шаг в неверном направлении.ё

Завтра C# стал работать в 100 раз медленнее, чем сейчас. Что от этого поменяется?
Sapienti sat!
Re[11]: Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 06.09.08 20:23
Оценка:
Здравствуйте, VladD2, Вы писали:
ANS>>то связи между статической типизацией и ВМ там нет.

VD>Это чушь. Только наличие статической аннотации типов и дало возможность показывать Strongtalk хоть что-то отдаленно напоминающее результаты хороших компиляторов.


Еще раз, для тех кто в танке: связи между типами и тем, какой байткод генерится &mdash; нет:

The type system is both optional and incremental, and operates completely independently of the compiler technology (which means that normal untyped Smalltalk code runs just as fast as typed code).


Вот еще, например, презентация Джилада Брахи где он отмечает:

(Стр. 32)
* Run-time semantics are independent of type system
* Type annotations are optional
(Стр. 35)
Strongtalk
* An optional type system for Smalltalk
* Fastest Smalltalk ever, but does not rely on types for performance


Я не совсем понял, ты считаешь, что если разработчики ВМ .Net не смогли реализовать ничего подобного, то никто не может?
Если бы они поднатужились, то смогли бы сделать объектную систему без дурацких невиртуальных методов. А теперь всё — вколочено гвоздями.
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[5]: Опять веб-приложения
От: Константин Б. Россия  
Дата: 07.09.08 02:57
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Здравствуйте, VladD2, Вы писали:


AVK>>>http://en.wikipedia.org/wiki/Webkit

VD>>И? Это хреть работать только в броузере Гугля? Нет? Тогда что нового привнес этот броузер?
C>Из крупного: новый механизм изоляции и самый оптимизированый JavaScript. Ну и по мелочам: удобные popup'ы, многофункциональный address bar, история сайтов и т.п.

Механизм изоляции уже был в IE8, многофункциональный адресбар уже есть и в фаерфоксе и в опере и в том же IE8. History есть во ВСЕХ браузерах.

Что там осталось? Виртуальная машина и удобные попапы?
Re[6]: Опять веб-приложения
От: D. Mon Великобритания http://thedeemon.livejournal.com
Дата: 07.09.08 07:06
Оценка:
Здравствуйте, Константин Б., Вы писали:

КБ> History есть во ВСЕХ браузерах.


Т.е. ВСЕ браузеры умеют искать по содержимому недавно посещенных страниц?
Re[12]: Опять веб-приложения
От: EvilChild Ниоткуда  
Дата: 07.09.08 07:19
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Если бы они поднатужились, то смогли бы сделать объектную систему без дурацких невиртуальных методов. А теперь всё — вколочено гвоздями.

Ты имеешь в виду, что все методы должны быть виртуальными?
now playing: Guy Gerber — Belly Dancing
Re[7]: Опять веб-приложения
От: Константин Б. Россия  
Дата: 07.09.08 10:14
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>Здравствуйте, Константин Б., Вы писали:


КБ>> History есть во ВСЕХ браузерах.


DM>Т.е. ВСЕ браузеры умеют искать по содержимому недавно посещенных страниц?


А это... Нет не все Х)
Re[5]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.09.08 13:08
Оценка:
Здравствуйте, AndrewVK, Вы писали:

VD>>Другими словами, Silverlight 2.0 будет работать с МСИЛ-ом?


AVK>Да. Хуже того, он его даже не интерпретировать будет, а обрабатывать JIT-ом.


Я это и хотел спросить. Потому как, сам понимаешь, интерпретация не есть гуд.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[6]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.09.08 13:09
Оценка:
Здравствуйте, D. Mon, Вы писали:

DM>А не получится ли, что F# и Nemerle требуют для работы свои сборки (FSharp.Core.dll, Nemerle.dll), которые не запихнешь в Silverlight по причине урезанности дотнета в последнем?


Дык само приложение — сборка. Что же оно не сможет другие сборки подгрузить? Думаю — сможет.
Кроме того библиотеки можно и напрямую использовать (в исходниках).
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.09.08 13:11
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Еще раз, для тех кто в танке: связи между типами и тем, какой байткод генерится &mdash; нет:

ANS>

ANS>The type system is both optional and incremental, and operates completely independently of the compiler technology (which means that normal untyped Smalltalk code runs just as fast as typed code).



Это не более чем треп.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.09.08 13:12
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Я не совсем понял, ты считаешь, что если разработчики ВМ .Net не смогли реализовать ничего подобного, то никто не может?


Я не верю в сказки. Чудес не бывает.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[12]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.09.08 13:17
Оценка:
Здравствуйте, AndrewVK, Вы писали:

VD>>А какого хрена сразу было это не сделать?


AVK>Изначально планировалось сразу, но, видать, не успевали к Олимпиаде.


Похоже так оно и есть. По крайне мере — это все объясняет.

VD>>К тому же важно, чтобы JIT-компилятор был бы быстрым и функциональным, а не урезанной версией.


AVK>А вот это вряд ли, чудес не бывает.


А зачем здесь чудеса? Джит — это программный модуль практически завязаный только на архитектуру процессора. По крайней мере для Линукс x86/x64 уж точно можно было бы сделать его эффективнее.

Я думаю тут дело не в проблемах или объеме работ. Скорее всего дело в политике протекционизма Винды. Что конечно можно понять, но тем неменее это снижает привлекательность дотнета.

VD>> Я бы на месте МС подумал о переносе основного дотнета на базовые не Виндовс платформы


AVK>Зачем это им? На самом дотнете денег не заработаешь.


Иначе не надо начинать проекты вроде Силверлайт. Такие проекты должны быть переносимыми. Что входит в противоречие с политикой протекционизма Виндовс.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[7]: Опять веб-приложения
От: VladD2 Российская Империя www.nemerle.org
Дата: 07.09.08 13:19
Оценка:
Здравствуйте, Cyberax, Вы писали:

VD>>Все это меньше чем ничто. В броузере важен основной движок и средства его программирования.

C>Это ОЧЕНЬ много. Особенно при нынешних расплодившихся malware'ах.

Немогу согласиться.

VD>>Просто оптимизация скрипата — это шаг в неверном направлении.ё

C>Завтра C# стал работать в 100 раз медленнее, чем сейчас. Что от этого поменяется?

Я, и многие другие, перестанут его использовать. Только я уверен, что это не случится.
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Опять веб-приложения
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 07.09.08 14:00
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>А зачем здесь чудеса? Джит — это программный модуль практически завязаный только на архитектуру процессора. По крайней мере для Линукс x86/x64 уж точно можно было бы сделать его эффективнее.


Чудес в том плане, что МС не будет пилить сук, на котормо сидит.

AVK>>Зачем это им? На самом дотнете денег не заработаешь.


VD>Иначе не надо начинать проекты вроде Силверлайт. Такие проекты должны быть переносимыми.


А силверлайт и переносим, на винды для всех процессоров и макось. Кроме того, есть еще и Moonlight, работающий под большинством распространенных операционок.

VD> Что входит в противоречие с политикой протекционизма Виндовс.


Дохлый JIT — не входит, но большую часть потребностей удовлетворяет.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[14]: Опять веб-приложения
От: EvilChild Ниоткуда  
Дата: 07.09.08 17:06
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Всё должно быть максимально единообразно. Либо все методы невиртуальные, либо все виртуальные. Для ОО системы естественно последнее.


Можешь привести аргументы в пользу единообразия именно в этом случае?
Я вот не вижу как гарантировать соблюдение хоть каких-то инвариантов, если все методы виртуальные.
now playing: Marc Romboy — Elif (Jimpster Remix)
Re[13]: Опять веб-приложения
От: EvilChild Ниоткуда  
Дата: 07.09.08 17:07
Оценка:
Здравствуйте, VladD2, Вы писали:

ANS>>Еще раз, для тех кто в танке: связи между типами и тем, какой байткод генерится &mdash; нет:

ANS>>

ANS>>The type system is both optional and incremental, and operates completely independently of the compiler technology (which means that normal untyped Smalltalk code runs just as fast as typed code).



VD>Это не более чем треп.


Не флейма для — твоё заявление выглядит ещё менее убедительно.
Да и информативность у него хромает.
now playing: Marc Romboy — Elif (Jimpster Remix)
Re[13]: Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 07.09.08 17:14
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Это не более чем треп.


А, блин — это ж осень началась, а я только заметил.
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[15]: Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 07.09.08 17:18
Оценка:
Здравствуйте, EvilChild, Вы писали:

ANS>>Всё должно быть максимально единообразно. Либо все методы невиртуальные, либо все виртуальные. Для ОО системы естественно последнее.


EC>Можешь привести аргументы в пользу единообразия именно в этом случае?


Например, об этом нужно знать и помнить, что вот в этом случае вызываются одни методы, а в другом другие.

EC>Я вот не вижу как гарантировать соблюдение хоть каких-то инвариантов, если все методы виртуальные.


А я не вижу никаких проблем.
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[16]: Опять веб-приложения
От: EvilChild Ниоткуда  
Дата: 07.09.08 17:28
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Например, об этом нужно знать и помнить, что вот в этом случае вызываются одни методы, а в другом другие.


Зачем об этом помнить? Об этом нужно знать только при расширении класса, клиентскому коду вообще по барабану, что там что-то виртуальное. Более того, в большинстве случаев виртуальным методам нечего делать в публичном интерфейсе — NVI pattern.

EC>>Я вот не вижу как гарантировать соблюдение хоть каких-то инвариантов, если все методы виртуальные.


ANS>А я не вижу никаких проблем.


Смотри выше.
now playing: Robert Babicz — Buffer Expander
Re[17]: Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 07.09.08 19:42
Оценка:
Здравствуйте, EvilChild, Вы писали:

ANS>>Например, об этом нужно знать и помнить, что вот в этом случае вызываются одни методы, а в другом другие.

EC>Зачем об этом помнить? Об этом нужно знать только при расширении класса, клиентскому коду вообще по барабану, что там что-то виртуальное.

Коду вообще всё по барабану, а вот программисту-писателю или программисту-читателю далеко не всё.

EC>Более того, в большинстве случаев виртуальным методам нечего делать в публичном интерфейсе — NVI pattern.


Во-первых, по ссылке сказано, что "The NVI pattern recognizes the benefits of a non-abstract method". А "the benefits" (судя по дальнейшему упоминанию "runtime cost") это скорость. Что является чистейшей воды "преждевременной оптимизацией". Во-вторых, кроме публичных интерфейсов есть еще и рабочий код. Тебе не кажется странным ради 0.1% кода вносить новую сущность в язык?

EC>>>Я вот не вижу как гарантировать соблюдение хоть каких-то инвариантов, если все методы виртуальные.

ANS>>А я не вижу никаких проблем.
EC>Смотри выше.

Выше ты написал "клиентскому коду вообще по барабану, что там что-то виртуальное". Ы?
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[18]: Опять веб-приложения
От: EvilChild Ниоткуда  
Дата: 07.09.08 20:16
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Во-первых, по ссылке сказано, что "The NVI pattern recognizes the benefits of a non-abstract method". А "the benefits" (судя по дальнейшему упоминанию "runtime cost") это скорость. Что является чистейшей воды "преждевременной оптимизацией". Во-вторых, кроме публичных интерфейсов есть еще и рабочий код. Тебе не кажется странным ради 0.1% кода вносить новую сущность в язык?


Ты совсем чуть-чуть не дочитал:

This level of indirection allows for pre and post operations relative to the abstract operations both immediately and with future unforeseen changes. The NVI pattern can be deployed with very little software production and runtime cost. Many commercial frameworks employ the NVI pattern.

Обрати внимание на выделенное.
Ключевая фраза там:

allows for pre and post operations relative to the abstract operations both immediately and with future unforeseen changes


ANS>Выше ты написал "клиентскому коду вообще по барабану, что там что-то виртуальное". Ы?


В вышеописанном случае виртуальность нужна только тем, кто расширяет класс
т.е. виртуальность — это артефакт реализации и интересен он только наследниками и видим только ими.
Коду использующему класс (тому который манипулирует экземплярами класса) ничего о виртуальности знать не надо.
now playing: Ron & Zap — Uhlenbusch
Re[7]: Опять веб-приложения
От: Mamut Швеция http://dmitriid.com
Дата: 08.09.08 10:40
Оценка:
КБ>> History есть во ВСЕХ браузерах.

DM>Т.е. ВСЕ браузеры умеют искать по содержимому недавно посещенных страниц?


Кроме ИЕ — все (для ФФ есть addon)


dmitriid.comGitHubLinkedIn
Re[5]: Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 08.09.08 14:27
Оценка:
Здравствуйте, Cyberax, Вы писали:

C>Из крупного: новый механизм изоляции и самый оптимизированый JavaScript. Ну и по мелочам: удобные popup'ы, многофункциональный address bar, история сайтов и т.п.


ярлыки приложений...
http://www.smalltalk.ru << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[14]: Опять веб-приложения
От: Кэр  
Дата: 08.09.08 15:00
Оценка:
Здравствуйте, Cyberax, Вы писали:
C>>>Опять же, тут возможны полутона. Например, Google Gears работает (в виде плугина) на всех браузерах. Но на Chrome оно будет работать быстрее.
Кэр>>Кстати да. А где вообще эти Гирз используются? Я про них в последний раз слышал давно так — в момент их релиза. После этого они подернулись забвением. Даже сайты гугла не требуют установки этого плагина.
C>В Google Reader (опционально) используются.
Google Reader? Нда, я ожидал, что шестеренки скорее в Google Apps будут использованы — там многопоточность js больше была бы в тему. Reader как-то не тянет на сверхнапряженное приложение. Возможно у Гугла самого есть проблемы с осваиванием собственных технологий.

C>Идеально подошли бы для веб-версии RSDN@Home

Почему именно RSDN@Home?
Re[6]: Опять веб-приложения
От: AndrewVK Россия http://blogs.rsdn.org/avk
Дата: 08.09.08 15:43
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>ярлыки приложений...


Где то в FF уже пробегало, ссылки не сохранилось.
... << RSDN@Home 1.2.0 alpha 4 rev. 1111 on Windows Vista 6.0.6001.65536>>
AVK Blog
Re[8]: Опять веб-приложения
От: russian_bear  
Дата: 16.09.08 16:20
Оценка:
Кэр>>Но вопрос остается в силе — зачем мне javascript после релиза Silverlight?
ANS>Потому как программы без пользователей никому не нужны. Хинт: см. апплеты.

NBCOlympics использовали для онлайн трансляций Silverlight бету. При том, что этот канал купил право эксклюзивного показа олимпийских игр в Штатах. Микрософт не стоит на месте

ANS>Отвечать на любые возражения в этой ветке не буду, ибо предлагаю подождать пару-тройку лет и всё увидеть самому.


Это точно...
Re[9]: Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 17.09.08 06:28
Оценка:
Здравствуйте, russian_bear, Вы писали:

_>NBCOlympics использовали для онлайн трансляций Silverlight бету. При том, что этот канал купил право эксклюзивного показа олимпийских игр в Штатах. Микрософт не стоит на месте


Кстати кстати. Какую добавленную стоимость получил NBCOlympics использую Silverlight как проигрыватель видео вместо Flash?
http://www.smalltalk.ru << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
Re[10]: Опять веб-приложения
От: Sinclair Россия https://github.com/evilguest/
Дата: 17.09.08 08:21
Оценка:
Здравствуйте, Andrei N.Sobchuck, Вы писали:

ANS>Кстати кстати. Какую добавленную стоимость получил NBCOlympics использую Silverlight как проигрыватель видео вместо Flash?

Наверное, HD-вещание?
... << RSDN@Home 1.2.0 alpha rev. 677>>
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[7]: Опять веб-приложения
От: Andrei N.Sobchuck Украина www.smalltalk.ru
Дата: 17.09.08 14:38
Оценка:
Здравствуйте, AndrewVK, Вы писали:

AVK>Где то в FF уже пробегало, ссылки не сохранилось.


Mozilla Prizm?
http://www.smalltalk.ru << RSDN@Home 1.1.4 stable SR1 rev. 568>>
Я ненавижу Hibernate
Автор: Andrei N.Sobchuck
Дата: 08.01.08
!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.