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


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Сравнительная производительность 1С и JavaScript
24. Января 2014 :: 12:51
Печать  
Довелось мне заняться написанием обработки для расчета оптимального маршрута развоза товаров между несколькими точками (задача коммивояжера). В качестве основы для вывода карты и роутинга выбрано API Яндекс-карт, а платформа 1С 8.2 в режиме УФ (от других платформ я практически ушел и они мне неинтересны). Но вопрос не об этом, хотя и он интересен. Дело в том что решение этой задачи требует дикого количества вычислений. И вот тут я наткнулся на тот факт что JS делает это намного быстрее 1С. Специально для подтверждения гипотезы мной были написаны несколько тестов, результаты которых я привожу ниже, а сами тесты в аттачах. Ради спортивного интереса сделал тест и для 1С 7.7. Можно было продолжить линейку тестов и сделать их для 1С 8.2 в режиме обычного приложения, протестировать в веб-клиенте, сделать на 1С 7.7 с объектом WebBrowser - но это уже не имело особого смысла да и ИМХО неинтересно.

Тесты проводил на своем ультрабуке с i5 под Win 8.1 x64 где тест TPC-1C-GILV-A от Гилева дает 52 попугая. Хотя на всякий случай перепроверил еще на двух клиентских ПК с i7 под Win 7 x64 - тенденция аналогичная. Тесты проводились на чистых конфигурациях. Версии 1С 7.70.27 и 8.2.19.80.

Код теста (для JS аналогично, для 1С 7.7 вместо массива использованы переменные)


Для Итерация = 1 По 10 Цикл
     Массив = Новый Массив(4);
     Для Виток = 1 По КоличествоВитков Цикл
           Массив[0] = Виток%1000;
           Массив[1] = Виток/1000;
           Массив[2] = Виток*1000;
           Массив[3] = Массив[0]+Массив[1]+Массив[2];
     КонецЦикла;
КонецЦикла;



Тест 1С 8.2 УФ: среднее время 46'908 мс



Тест 1С 7.7: среднее время 77'832 мс



Тест JS в поле HTML-документа: среднее время 386 мс на первом выполнении, и около 101 мс на всех последующих



Тест JS в объекте MSScriptControl: среднее время 8'565 мс



По результатам этих тестов у меня возникло много вопросов, которые остались без ответа:

  • Почему 1С делает расчеты несравненно медленнее JS? Ведь оба языка - интерпретаторы. Разница составляет 464 раза для 1С 8.2 и 771 раз для 1С 7.7! Мне кажется это вообще недопустимо - так писать интерпретаторы как 1С.
  • Почему JS в поле HTML выполняется быстрее чем в MSScriptControl? Разница составляет 85 раз. Разные движки? Получается MS в принципе уже наплевать на MSScriptControl, и оптимизацией движка занимается только для IE? Хотя в поле HTML (он же ActiveX WebBrowser) версию IE сто лет уже не меняли, и она так и остается IE7 когда уже IE11 есть.
  • Почему при первом запуске JS в поле HTML он отрабатывает намного медленнее чем при последующих запусках? Кэширование? А что можно кэшировать в вычислениях?
  • Как сделать в 1С 8.2 УФ скрытое поле HTML-документа чисто для выполнения расчетов? Пробовал менять видимость поля - не катит, 1С после этого с ним не работает.

Тест для 1С 8.2 УФ: http://101321.selcdn.ru/pub.maljaev.ru/%D0%A2%D0%B5%D1%81%D1%82%D0%9F%D1%80%D0%B...
Тест для 1С 7.7: http://101321.selcdn.ru/pub.maljaev.ru/%D0%A2%D0%B5%D1%81%D1%82%D0%9F%D1%80%D0%B...
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #1 - 24. Января 2014 :: 13:27
Печать  
Сдаётся мне (навскидку) что дело в арифметических операциях, а точнее в том, как числа представляются в 1С. Там же не float, а свой формат, что-то типа Numeric в SQL. Отсюда и тормоза.
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #2 - 24. Января 2014 :: 13:43
Печать  
Пробовал использовать только целочисленные операции с числами - результат аналогичный.
Пробовал даже использовать просто цикл без вычислений - результат аналогичный.  Улыбка

Создал копипастом статью на Инфостарте (появится после модерации), возможно удастся привлечь внимание к этой фиче: http://infostart.ru/public/253802/
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #3 - 24. Января 2014 :: 13:53
Печать  
Не, с числами любые операции в 1С будут тормозить. А вот например, если вместо арифметики строки мучать:

     А = "1";
     Б = "2";
     В = "3";
     Г = А + Б + В;

то у меня вышло

Начало теста 1С на 100 000 витков
1C: 3018
Жаба: 2044


В тесте с числами убрал Сообщить(), мерил только общее время

Начало теста 1С на 100 000 витков
1C: 11838
Начало теста 1С на 100 000 витков
Жаба: 1664

т.е. разница "всего лишь" на порядок, а не на 3
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #4 - 24. Января 2014 :: 13:55
Печать  
Я конечно попробую со строками, но ИМХО весь учет в 1С построен в основном на числах. Улыбка
Но за наводку для дальнейших экспериментов спасибо.
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #5 - 24. Января 2014 :: 14:08
Печать  
Ну, я бы сказал, что учёт в 1С построен на работе с БД, так что потери на арифметику пренебрежительно малы.
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

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


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

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

Код
Выбрать все
Для Виток = 1 По КоличествоВитков Цикл
	А = "1";
	Б = "2";
	В = "3";
	Г = "" + А + Б + В;
КонецЦикла; 





Код
Выбрать все
var a, b, c, d;
for (var vitok = 0; vitok < kolVitkov; vitok++) {
	a = "1";
	b = "2";
	c = "3";
	d = ""+a+b+c;
}; 





Разница в 2243 раза.  Смех
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #8 - 24. Января 2014 :: 14:33
Печать  
Хм... может, я туплю? У меня такой тест

Код
Выбрать все
Процедура Сформировать()
	Сообщить("Начало теста 1С на " + СокрЛП(Формат(КоличествоВитков, "Ч15.0. ")) + " витков");
	Старт = _GetPerformanceCounter();

	СуммаВремени = 0;

	Для Итерация = 1 По 10 Цикл
		БылоВремя = _GetPerformanceCounter();

		Для Виток = 1 По КоличествоВитков Цикл
			//А = Виток % 1000;
			//Б = Виток / 1000;
			//В = Виток * 1000;
			//Г = А + Б + В;
			А = "1";
			Б = "2";
			В = "3";
			Г = А + Б + В;
		КонецЦикла;

		//ВремяВитка = _GetPerformanceCounter() - БылоВремя;
		//СуммаВремени = СуммаВремени + ВремяВитка;

		//Сообщить("Итерация " + СокрЛП(Итерация) + ": " + СокрЛП(ВремяВитка) + " мс");
	КонецЦикла;

	Стоп = _GetPerformanceCounter();
	Время = Стоп - Старт;
	Сообщить("1C: "+Время);
	//Сообщить("Среднее: " + СокрЛП(Окр(СуммаВремени / 10)) + " мс");
КонецПроцедуры

Процедура Жаба()
	Скрипт = СоздатьОбъект("MSScriptControl.ScriptControl");
	Скрипт.Language = "JScript";
	Стр = "
	|function SpeedTest(nCycles)
	|{
	|	for( i = 1; i <= 10; i++ )
	|	{
	|		for( j = 1; j <= nCycles; j++ )
	|		{
	|			/*
	|			a = j % 1000;
	|			b = j / 1000;
	|			c = j * 1000;
	|			d = a + b + c;
	|			//*/
	|
	|			//*
	|			a = '1';
	|			b = '2';
	|			c = '3';
	|			d = a + b + c;
	|			//*/
	|		}
	|	}
	|}
	|";
	Скрипт.AddCode(стр);


	Сообщить("Начало теста 1С на " + СокрЛП(Формат(КоличествоВитков, "Ч15.0. ")) + " витков");

	Старт = _GetPerformanceCounter();
	Скрипт.Run("SpeedTest", КоличествоВитков);
	Стоп = _GetPerformanceCounter();
	Время = Стоп - Старт;
	Сообщить("Жаба 1: "+Время);

	Старт = _GetPerformanceCounter();
	Скрипт.Run("SpeedTest", КоличествоВитков);
	Стоп = _GetPerformanceCounter();
	Время = Стоп - Старт;
	Сообщить("Жаба 2: "+Время);
КонецПроцедуры
 



комменты оставил, а то вдруг я там чего-то напутал Улыбка
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #9 - 24. Января 2014 :: 14:35
Печать  
Конечно! Я же еще в первом посте написал что MSScriptControl отдыхает. Ты JS в поле HTML-документа попробуй или если в 1С 7.7 - то в в WebBrowser ActiveX.

P.S. Ты вообще первый пост внимательно прочитал/просмотрел?  Подмигивание
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #10 - 24. Января 2014 :: 15:04
Печать  
Проверил с HTML-документом, результаты

Начало теста 1С на 10 000 витков
Жаба HTML: 4400
Жаба ScriptControl: 4306

Но у меня вынь ХП, 32.

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


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #11 - 24. Января 2014 :: 15:06
Печать  
Что ж, сочувствую.... Улыбка
А я на трёх компах перепроверил, но все не ниже Win7.
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #12 - 24. Января 2014 :: 15:09
Печать  
это было со строками, а с числами

Начало теста 1С на 10 000 витков
Жаба HTML: 158
Жаба ScriptControl: 164

может, ещё и влияние 64-разрядной архитектуры сказывается?
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #13 - 24. Января 2014 :: 15:11
Печать  
Сейчас на Ксеоне попробую под Win Server.
P.S. Не могу, там платформа старая, а ставить новую сейчас не хочется - могут быть проблемы.
P.P.S. Хотя нет, есть у меня еще один чистый Ксеон - туда можно 1С поставить.
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #14 - 24. Января 2014 :: 15:41
Печать  
на ксеоне, вынь 2008, 64

Начало теста 1С на 1 000 000 витков
Жаба HTML: 441
Жаба ScriptControl: 9335
1C: 22242 (ошибка, тест был со строками) -> 103311 (правильное время)

причём, JS я запускал как из 1С (7.7), так и просто как файл - результат один.
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #15 - 24. Января 2014 :: 15:51
Печать  
так, это было с числами, а вот со строками

Начало теста 1С на 1 000 000 витков
Жаба HTML: 1250
Жаба ScriptControl: 27871
1C: 23609
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #16 - 24. Января 2014 :: 15:55
Печать  
Тесты мои? Оригинальные?
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #17 - 24. Января 2014 :: 15:56
Печать  
а JS, со строками, из командной строки - 8565
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #18 - 24. Января 2014 :: 16:01
Печать  
Тесты были те, что я приводил, измерялось только общее время.
И в первом тесте ошибка
1C: 22242 (ошибка, тест был со строками) -> 103311 (правильное время)
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #19 - 24. Января 2014 :: 16:04
Печать  
Попробовал еще раз на других компах - результаты совсем не как у меня. Не понимаю... Проверил alert-ом скрипт, думаю может не выполняется полностью - всё ОК,  цикл полностью прокручивается, значения считаются.

На своем ноуте запустил тест строк на 1'000'000'000 (миллиард !!!) прогонов JS в HTML: среднее время 750мс. На 1С такое даже запускать не стал.

Может у меня над ноутом инопланетяне поработали? Улыбка
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #20 - 24. Января 2014 :: 16:07
Печать  
А на клиентском i7 запустил - тот же результат но всего за 10'000'000 итераций, то есть в 100 раз медленнее.  Ужас Очень довольный

Могу дать желающим погонять свой ноут по TeamViewer. Улыбка

Может быть дело в Win 8.1 ?
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #21 - 24. Января 2014 :: 16:17
Печать  
может, я опять что-то не то делаю

в html вставил
Код
Выбрать все
	function SpeedTest(nCycles)
	{
		for( i = 1; i <= 10; i++ )
		{
			for( j = 1; j <= nCycles; j++ )
			{
				//*
				a = j % 1000;
				b = j / 1000;
				c = j * 1000;
				d = a + b + c;
				//*/

				/*
				a = '1';
				b = '2';
				c = '3';
				d = a + b + c;
				//*/
			}
		}
	}
 


вызов
Код
Выбрать все
	старт = _GetPerformanceCounter();
	Браузер.Объект.document.parentWindow.SpeedTest(1000000);
	стоп = _GetPerformanceCounter();
	время = стоп - старт;
	Сообщить(""+время);

 

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


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

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

У тебя 8-ки нет чтобы код мой посмотреть?
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #23 - 24. Января 2014 :: 16:26
Печать  
Восьмёрки нет, только в понедельник на работе смогу посмотреть.
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #24 - 24. Января 2014 :: 16:28
Печать  
TeamViewer
ID 579 685 784
pass  v5sh94
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #25 - 24. Января 2014 :: 16:51
Печать  
Ну вот, ADirks воочию всё увидел и протестировал и может подтвердить что я не псих. Да и мне поспокойнее стало. Улыбка

У меня на компе Sun Java стоит - попробуй, может в ней дело?
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #26 - 24. Января 2014 :: 16:56
Печать  
увидел, это точно...

ага, с Sun Java тоже вариант, надо будет попробовать
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


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

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

Код
Выбрать все
<!-- создаем свой перехватчик ошибок скриптов для игнорирования ошибок (хотя можно сделать отладчик ошибок) -->
<script type="text/javascript">
	function myErrHandler(msg, url, lineno) {
		if (РежимОтладки) {
			alert('Ошибка в строке '+lineno+': '+msg);
		}
		return true;
	}
	window.onerror = myErrHandler;
</script>
 



Если РежимОтладки выставить в true - то будет сообщать об ошибке, false - не будет.
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #28 - 24. Января 2014 :: 17:15
Печать  
Еще всё-таки возможно дело в версии Windows, а не в ее разрядности. Разрядность Windows для 32-битного приложения вообще не при чём. Зато есть тот факт что для Win8 родным браузером является IE11, а значит хотя в контролах и используется движок IE7, но часть библиотек к нему скорее всего подключаются от родного IE. Это я приметил еще несколько лет назад, когда делал один проект для клиента с использованием SVG. В общем надо будет потестить именно под Win8.1 или на Win8 на худой конец. MS очень хвалилась тем что ей удалось на порядки ускорить работу JavaScript когда IE11 выпустила.
  
Наверх
 
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


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

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #29 - 24. Января 2014 :: 17:25
Печать  
Поставил жабу с http://java.com ; - это вообще оно?

время в HTML-JS никак не поменялось. (это на моём вин ХП, 32)
  
Наверх
 
IP записан
 
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 записан
 
vladimirmir2012
Senior Member
****
Отсутствует


1C++ rocks!

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


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #46 - 27. Января 2014 :: 09:40
Печать  
Я же выше уже написал, что сейчас нет смысла жестко завязываться на JavaScript. Разница во времени выполнении скрипта может составлять до 1000 раз, а IE11 есть далеко не у всех, да и интегрировать в программу поле HTML для выполнения куска кода ИМХО нерентабельно и далеко не всегда возможно. Да и конвертер [1С->другие языки] меня мало интересует. Легче и правильнее написать блок кода сразу на нужном языке.

Я сейчас уже другой мыслью занялся - выполнение кода c# или с++ (последнее предпочтительнее) "на лету", или компиляция "на лету" библиотеки с последующем ее использованием с ВК-инжектором. Пример для c# я нашел: http://yrevotyuk.blogspot.ru/2013/03/in-flight-csharp.html
  
Наверх
 
IP записан
 
vladimirmir2012
Senior Member
****
Отсутствует


1C++ rocks!

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


1C++ rocks!

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


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #49 - 27. Января 2014 :: 11:34
Печать  
Ну если не заходить глубоко в дебри, то может подскажешь как выполнить JavaScript-код, минуя стандартный WSH-движок, с передачей в него параметров и возврата результата в 1С. Желательно не в теории а на практике. Ну и чтобы скорость выполнения была сравнима с JavaScript Chakra который в IE11. А уж от простого к сложному двигаться.
  
Наверх
 
IP записан
 
vladimirmir2012
Senior Member
****
Отсутствует


1C++ rocks!

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


1C++ rocks!

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


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #52 - 27. Января 2014 :: 15:22
Печать  
И что это дает? Если сейчас возможно написать скрипт на JS который заткнет за пояс Lua минимум на 2 порядка за счет JIT-компиляции. Я спрашивал про решения, которые равны по производительности или хотя бы приближены. Вот когда кто-нибудь найдет библиотечку, которая позволит выполнить нижеприведенный скрипт (или его аналог) хотя бы за 2 секунды (а лучше не более одной) - дайте знать плиз.

Код
Выбрать все
var a, b, c, d, i;
for (i = 0; i < 1000000000; i++) {
	a = "1";
	b = "2";
	c = "3";
	d = a+b+c;
}; 



У меня вот этот скрипт на миллиард циклов за 0.76 секунды выполняется (в поле HTML). А что там с Lua?
P.S. Для примера тот же самый код в C# выполняется аж за 25 секунд. Почувствуйте силу JIT.
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #53 - 27. Января 2014 :: 15:35
Печать  
Возможно, я не в теме, но Луа как раз один из самых быстрых интерпретируемых языков.
Нужно спросить у spock-а или steban-а, не помню, кто из них на Луа писал.
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer &amp;&amp; tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
maljaev
Senior Member
****
Отсутствует


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #54 - 27. Января 2014 :: 15:37
Печать  
artbear, да - он быстрый, но согласись что чистый машинный код быстрее. Улыбка
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #55 - 27. Января 2014 :: 15:40
Печать  
maljaev писал(а) 27. Января 2014 :: 15:22:
И что это дает? Если сейчас возможно написать скрипт на JS который заткнет за пояс Lua минимум на 2 порядка за счет JIT-компиляции.
...
У меня вот этот скрипт на миллиард циклов за 0.76 секунды выполняется. А что там с Lua?
P.S. Для примера тот же самый код в C# выполняется аж за 25 секунд. Почувствуйте силу JIT.

Я бы не был столь категоричен, зачастую "оптимизаторы кода" просто выпиливают все лишнее, не делая зря "глупую", по их мнению, работу. Например, не подменяет ли JIT-компилятор, в твоем случае, все эти операции сложения и присваивания на одну единственную операцию присваивания (d="123"), а с учетом того, что данная переменная больше нигде не используется, то и вовсе выбрасывает этот глупый цикл из расчета.
  
Наверх
ICQ  
IP записан
 
maljaev
Senior Member
****
Отсутствует


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #56 - 27. Января 2014 :: 15:43
Печать  
Нет, до этого код был сложнее (привожу ниже) и результаты были аналогичными. Плюс я проверял значения времени выполнения alert-ом.

Код
Выбрать все
var a, b, c, d, i;
for (i = 0; i < 1000000000; i++) {
	a = i%1000;
	b = i*1000;
	c = i/1000;
	d = a+b+c;
}; 



Как в этом алгоритме компилятор может упростить конструкцию?
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #57 - 27. Января 2014 :: 15:45
Печать  
Например, такой вариант исключит "предпросчет":
Код
Выбрать все
var a, b, c, d, i;
d = "1";
for (i = 0; i < 1000000000; i++) {
	a = d;
	b = "2";
	c = "3";
	d = a+b+c;
	d = d.substring(1,4);
}; 


Интересно, сколько будет тут "попугаев"?
  
Наверх
ICQ  
IP записан
 
maljaev
Senior Member
****
Отсутствует


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #58 - 27. Января 2014 :: 16:08
Печать  
Salimbek, хитрый ты Улыбка на миллиард дает 145 секунд. Правда последнюю строчку изменил на "d=d.substring(0,3)", т.к. она у тебя вроде не корректна ИМХО.
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #59 - 27. Января 2014 :: 16:14
Печать  
Ну а скажем такой тест выполняется за 10 секунд. А вычислительная нагрузка ИМХО больше. Здесь у оптимизатора есть возможность схитрить?

Код
Выбрать все
var massiv = [3];
for (var i = 0; i < 1000000000; i++) {
	massiv[0] = i%1000;
	massiv[1] = i/1000;
	massiv[2] = i*1000;
	massiv[3] = massiv[0]+massiv[1]+massiv[2];
	massiv[0] = massiv[3];
}; 

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


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #60 - 27. Января 2014 :: 16:35
Печать  
А может кто-нибудь эти тесты под C++ компильнуть? Я просто с C++ не работаю, даже компилятора нет.
  
Наверх
 
IP записан
 
maljaev
Senior Member
****
Отсутствует


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #61 - 27. Января 2014 :: 16:47
Печать  
maljaev писал(а) 27. Января 2014 :: 16:08:
Salimbek, хитрый ты Улыбка на миллиард дает 145 секунд. Правда последнюю строчку изменил на "d=d.substring(0,3)", т.к. она у тебя вроде не корректна ИМХО.

В C# же выполняется за 40 секунд. Почти уже уговорили перейти с JS на C# - он дает более логичные результаты.
  
Наверх
 
IP записан
 
vladimirmir2012
Senior Member
****
Отсутствует


1C++ rocks!

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


1C++ rocks!

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


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

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

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


1C++ rocks!

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


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #66 - 28. Января 2014 :: 18:20
Печать  
Я со своей темой определился. Буду использовать C#. Почему? Во-первых можно компилировать "на лету" в исполняемый код, используя встроенный в NET.Framework компилятор. А можно и заранее откомпилировать. Во-вторых, получив на выходе EXE-файл, можно запустить его в фоне в скрытом виде как описывал к примеру в своей публикации http://infostart.ru/public/16555/. Это очень удобно и важно для долгих расчетов. Можно создавать расчеты в несколько потоков для многоядерных систем. Обмен входными и выходными данными можно осуществлять через XML-файлы. Если же откомпилировать в DLL, то возможности становятся еще более обширными.

Код
Выбрать все
WshShell=СоздатьОбъект("WScript.Shell");
WshShell.Run([путь к исполняемому файлу или скрипту],0); 



В-третьих C# дает скорость, на сложных алгоритмах намного выше чем JavaScript, а главное предсказуемость. В-четвертых, в отличии от того же JS Chakra, не нужно встраивать поле HTML в форму, и практически не зависит от клиентского железа и ПО, а производительный интерпретатор как альтернативу WSH, здесь кроме Lua никто не представил. Компилятор JScript из комплекта NET.Framework генерирует очень медленный код, я проверил.

А конвертер 1С->JavaScript меня не интересует хотя бы по той причине что я пользуюсь всеми версиями 1С начиная от v77 и заканчивая v83, и файловыми и клиент-серверными, и толстыми и тонкими - и под какую из них будет конвертер? Мне уже и про 1С++ приходится забывать потихоньку.
  
Наверх
 
IP записан
 
vladimirmir2012
Senior Member
****
Отсутствует


1C++ rocks!

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


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #68 - 28. Января 2014 :: 19:32
Печать  
vladimirmir2012 писал(а) 28. Января 2014 :: 18:50:
О каких данных идет речь?

Ну например передать в C# пару массивов и вернуть обратно еще один массив. Я не о DLL говорю, а об EXE. С библиотекой проще.

vladimirmir2012 писал(а) 28. Января 2014 :: 18:50:
Все таки не пойму твой подход.
1С у тебя будет запускаться из C#?

Нет, наоборот. Процесс расчета будет запускаться из 1С фоновым потоком. Пользователь при этом сможет дальше работать. Как только расчет закончится, то 1С возьмет полученные результаты. Если это делать через EXE, то можно мониторить появление XML-файла с результатами. Если делать через DLL, то просто ждать события.
  
Наверх
 
IP записан
 
vladimirmir2012
Senior Member
****
Отсутствует


1C++ rocks!

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


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 564
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #70 - 31. Января 2014 :: 13:47
Печать  
Похоже эта новось будет как раз в тему...
Uzhas Of Buch сделал очередной мегакреатив http://yoksel.net.ru/haxe1s ; Ужас
  
Наверх
www  
IP записан
 
maljaev
Senior Member
****
Отсутствует


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #71 - 31. Января 2014 :: 14:40
Печать  
Забавно, но не прикольно. Haxe1s делает обратную работу - переводит код из нормальных языков программирования в язык 1С. Скорость работы сгенерированного кода при этом должна быть ужасна, учитывая то что интерпретатор 1С и так не блещет скоростью. Возможно удобство в использовании ООП, но по мне нафиг такое ООП которое нагибает платформу.
  
Наверх
 
IP записан
 
Djelf
God Member
*****
Отсутствует


Ubuntu + wine@etersoft
+ 1C 7.7

Сообщений: 564
Местоположение: Питер
Зарегистрирован: 02. Ноября 2007
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #72 - 31. Января 2014 :: 15:28
Печать  
А как насчет того чтоб подумать в обратную сторону? Оно же не только код 1С может генерировать.
Я о том что код при таком подходе, в принципе, можно сделать так чтобы выбирать произвольную платформу на которой он будет выполнятся.

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


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

Сообщений: 405
Местоположение: Нижний Новгород
Зарегистрирован: 19. Октября 2006
Пол: Мужской
Re: Сравнительная производительность 1С и JavaScript
Ответ #73 - 31. Января 2014 :: 15:29
Печать  
Ну да, об этом не подумал. Спасибо.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать