Переключение на Главную Страницу Страницы: 1 2 [3] 4 5  ОтправитьПечать
Очень популярная тема (более 25 ответов) Сравнительная производительность 1С и JavaScript (число прочтений - 18123 )
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #30 - 24. Января 2014 :: 17:26
Печать  
Вообще оно. Но не факт же что дело в ней. Попробуй перезагрузись?

Блин, у меня даже ПК не самый мощный, хотя правда с SSD и быстрой памятью. Но не может же быть дело в SSD? Или может? Я на той неделе смогу на другом компе с Win8.0 протестировать, но Win8.1 другой у меня в наличии нет.
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #31 - 24. Января 2014 :: 17:43
Печать  
Перезагрузился - всё то же самое.
Эксплорер у меня стоит - страшно сказать - 7 Улыбка
попробую ещё и его обновить, но уже завтра, надо же спать хоть иногда
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #32 - 24. Января 2014 :: 17:44
Печать  
Можешь не пробовать - я под IE9 проверял, та же картина что и у тебя. Надо под IE11 пробовать, а он только под Win8.
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #33 - 24. Января 2014 :: 18:22
Печать  
Тема хоть и интересная и содержит пока много непонятного, загадочного, и даже фантастического, но одно ясно уже сейчас: для публичных решений использовать вычисления на JS с расчетом на то что они будут выполняться быстрее чем в 1С в 500 и более раз - НЕЛЬЗЯ! Уж слишком много зависимостей от используемого на компьютерах ПО, и разница в 2 порядка между разными ПК неприемлема. У тебя может быть какой-то кусок алгоритма за секунду выполняется, а у другого за минуту. И это в лучшем случае. А если у тебя минуту выполняется, то что у других? В общем буду осваивать Native API и С++ - это дает более стабильные результаты, зависящие только от железа. Или, если уж хочется на JS - то тщательно проверять на всех версиях Windows начиная с WinXP и заканчивая Win8, а также под IE7...IE11. Легче всего это сделать, подняв несколько чистых виртуалок.
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #34 - 26. Января 2014 :: 15:20
Печать  
Информация для размышления: http://blogs.msdn.com/b/ie_ru/archive/2012/06/21/advances-in-javascript-performa...

Ключевое слово: JavaScript Chakra
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #35 - 26. Января 2014 :: 17:21
Печать  
Вот этот фикс устраняет проблему с ошибкой ожидания в браузере: http://support.microsoft.com/?kbid=175500
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #36 - 26. Января 2014 :: 19:10
Печать  
Я нашел зависимость и точное объяснение скорости выполнения JavaScript.

1. Установил на VirtualBox чистые Win7 x32 и Win81 x32 из MSDN-образов, никаких апдейтов не делал. Версии по умолчанию IE8 для Win7 и IE11 для Win81.
2. Установил 1С 8.2, выполнил тесты конкатенации строк JavaScript в поле HTML на 10'000'000 витков: Win7 среднее 8960мс, Win81 среднее 9мс.
3. Установил на Win7 IE11, выполнил тест: среднее 9мс.
4. Вернул Win7 к первоначальному состоянию, установил IE10, выполнил тесты: среднее 1620мс.

Стало понятно что существует прямая зависимость от установленной версии IE, и кардинальное увеличение быстродействия дает лишь IE11. Дальше начинаю разбираться что и почему.

1. За работу JavaScript отвечает библиотека "system32\jscript.dll". До IE9 эта библиотека отвечала и за IE и за WSH.
2. Начиная с версии IE9 появилось 2 библиотеки: "system32\jscript.dll" продолжает отвечать за WSH, а "system32\jscript9.dll" начала отвечать за IE.
3. Вплоть до Win81 и IE11 в системе так и существуют 2 библиотеки JavaScript. Названия файлов не меняются, меняются лишь версии библиотек. Библиотека jscript.dll так и имеет всё те же мажорную и минорную версии 5.8, меняется лишь номер сборки. А вот библиотека jscript9.dll меняет мажорную и минорную версии одновременно с движком IE, и на данный момент в Win81 имеет версию 11.0.

Вообще на самом деле WSH использует язык JScript, а IE - JavaScript. Это разные языки хоть и похожие. То ли IE до IE9 тоже работал на JScript, то ли оба функционала были объединены в одну библиотеку. Начиная с IE9 разделили.

Печально что IE11 доступна лишь для Win7 и Win8 любых минорных версий любой разрядности, и еще для 64-разрядных версий WinServer2008R2 и WinServer2012R2. Можно правда поиграться с подменой классов в реестре и библиотек (например мне удалось прикрутить jscript9.dll от IE11 к IE10, в 1С она заработала а вот IE стал вылетать), но это уже довольно опасный для системы изврат. Может быть можно делать подмену библиотеки для сценариев JavaScript, выполняющихся только в 1С, различными хуками - но как это сделать мне неизвестно.

Приятно осознавать, что MS провела огромную работу над оптимизацией движка JavaScript для IE, ускорив его на 2 порядка. И когда-нибудь можно будет использовать высокопроизводительные скрипты в 1С без оглядки в прошлое.

Запуск такого же теста на FireFox26 дает результаты, сравнимые с IE10, и даже медленнее. Видимо в IE11 работает именно механизм компиляции кусков JavaScript в машинный код, что позволяет достичь быстродействия, сравнимого с программой на С++.
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #37 - 27. Января 2014 :: 03:20
Печать  
Понятно.  Теперь ждём, когда весь мир дружно перейдёт на Win 8.
Version hell от микрософт - это так приятно...

P.S. А на инфостарте статья так и не появилась. Видимо, по уровню не дотягивает даже до печати ценников Улыбка
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #38 - 27. Января 2014 :: 06:55
Печать  
На Инфостарте я публикацию статьи сам придержал как только появились сведения о фантастической разнице в результатах. Так сказать "до выяснения". Теперь требуется ее серьезная доработка с учетом новой информации.

IE11 не только под Win8, еще под Win7 работает и под WinServer новых версий. В принципе, если разрабатывать решение "под клиента" а не публичное, то можно сразу узнать какие ОС там применяют, и в зависимости от этого принимать решение какие технологии использовать.
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #39 - 27. Января 2014 :: 07:10
Печать  
Еще я заметил одну особенность. Для того чтобы движок IE11 принял решение о компиляции куска программы в машинный код, его нужно сначала "раскачать". Например при открытии формы пару раз вызвать процедуру на миллион витков, а уже в реальном тесте на миллиард. Видимо IE11 считает либо такты на выполнение, либо время выполнения и не заморачивается на компиляции тех кусков кода которые и так быстро выполняются или вообще не поддаются компиляции.

Например такой конструкцией:

Код
Выбрать все
&НаКлиенте
Перем БылаКомпиляция;

&НаКлиенте
Процедура БраузерДокументСформирован(Элемент)
	Если НЕ БылаКомпиляция Тогда
		НачальноеВремя = ТекущаяУниверсальнаяДатаВМиллисекундах();
		Пока (ТекущаяУниверсальнаяДатаВМиллисекундах()-НачальноеВремя)<100 Цикл
			Элементы.Браузер.Документ.parentWindow.eval("testPerfomance(1)");
		КонецЦикла;
		БылаКомпиляция = Истина;
	КонецЕсли;
КонецПроцедуры
 

  
Наверх
 
IP записан
 
vladimirmir2012
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 426
Зарегистрирован: 18. Мая 2011
Re: Сравнительная производительность 1С и JavaScript
Ответ #40 - 27. Января 2014 :: 07:31
Печать  
.
« Последняя редакция: 03. Июня 2014 :: 15:13 - vladimirmir2012 »  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #41 - 27. Января 2014 :: 08:09
Печать  
Ну если уж так рассуждать, то сделав явную типизацию переменных можно и сразу в c# перевести. А дальше компилировать на лету csc.exe.
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #42 - 27. Января 2014 :: 08:16
Печать  
Вообще очень бы хотелось иметь для 1С какую-нибудь прослойку для быстрой генерации и выполнения машинного кода "на лету".

Скажем есть управляющая библиотека - менеджер. Подключили ее в 1С, выполнили метод .addObject("срока описание объекта на c# с переменными и методами") - и вуаля, объект доступен нам либо через управляющую библиотеку типа .myObject.myMetod() либо через "Новый COMОбъект"/"СоздатьОбъект". А в деструкторе управляющей библиотеки уничтожать объекты времени выполнения.
  
Наверх
 
IP записан
 
vladimirmir2012
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 426
Зарегистрирован: 18. Мая 2011
Re: Сравнительная производительность 1С и JavaScript
Ответ #43 - 27. Января 2014 :: 08:21
Печать  
.
« Последняя редакция: 01. Июня 2014 :: 06:39 - vladimirmir2012 »  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


Классический секс с 1С
надоел. Хочется изврата...

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #44 - 27. Января 2014 :: 08:25
Печать  
Интересно, а что мешает 1С реализовать JIT-компиляцию для своего языка, по аналогии с тем как это сделала MS в IE11 для JavaScript (да и не только MS).

http://ru.wikipedia.org/wiki/JIT-%EA%EE%EC%EF%E8%EB%FF%F6%E8%FF
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 2 [3] 4 5 
ОтправитьПечать