Имя: Пароль:
1C
 
Сравнение скорости выполнения программ на 1с и другими языками
,
0 marat61
 
20.01.10
15:15
Народ: попытался получить в инете информацию об эффективности реализации интерпретатора 1с и сравнительные характеристики скорости выполнения по сравнению с другими языками программирования.
К сожалению, что то ничего не нашел :(

Можно ли получить сравнительную информацию по скорости выполнения программ написанных на 1с и другими языками, например: Дельфи (компилятор), Java (байт-код + технология JIT) и JavaScript (интерпретатор) на одной и той же машине.

В качестве алгоритма можно предложить:
1. Вычисление числа фибоначи с использованием рекурсии
2. Сортировка пузырьком
3. Обработка xml с записью данных в плоскую таблицу (справочник)
Оценка скорости обработки xml и базы данных. Типовая задача для консолидации данных.

Я к сожалению сам 1с не использовал и сам таких цифр сделать не могу.
Было бы хорошо получить данные для различных значений элементов.

Сортировка на языке модула-2 из книжки Н.Вирта:
-----------------------------------------------
TYPE Item = INTEGER;
VAR a: ARRAY n OF Item

PROCEDURE BubbleSort;
VAR i, j: INTEGER; x: Item;
BEGIN
 FOR i := 1 TO n-1 DO
   FOR j := n-1 TO i BY -1 DO
     IF a[j-1] > a[j] THEN
       x := a[j-1]; a[j-1] := a[j]; a[j] := x
     END
   END
 END
END BubbleSort

Фибоначи через рекурсию
-----------------------
var n,i:integer;

function fib(n:byte):longint;
begin
 if (n=1) or (n=2) then
   fib:=1
 else
   fib:=fib(n-1)+fib(n-2);
end;

begin
 read(n);
 writeln(fib(n));
end.

Данные нужны для оценки качества реализации интерпретатора 1с.
Понятно, что 1с хорошо решает учетные задачи.
Может быть 1с использована для чисто алгоритмических задач?
1 H A D G E H O G s
 
20.01.10
15:17
Зачем?
2 cobRA
 
20.01.10
15:17
(0) Может, через (_!_). А вообще-то это изврат.
3 Господин ПЖ
 
20.01.10
15:19
>>Может быть 1с использована для чисто алгоритмических задач?

зачем? тормоза будут шо ппц
4 Господин ПЖ
 
20.01.10
15:20
скуль в себя терез dts забрасывает пару миллионов записей в табличку за несколько секунд. 1С даст время на покурить/поспать
5 marat61
 
20.01.10
15:23
Тут дело такое
хотим проект делать, а данных про 1с ее скорость нет
1с как способ реализации рассматривается
Народ, хотя бы для фибоначи сделаете, если не вломы.

Хочется хотя бы порядок знать.
7 Phace
 
20.01.10
15:26
(0) диплом чтоли пишешь?
8 Волшебник
 
20.01.10
15:27
(0) В реальных приложениях больше всего тормозит обращение к базе данных. Сравнение скорости интерпретаторов бессмысленно.
9 utilize
 
20.01.10
15:27
1с по любому отсасет
10 Chai Nic
 
20.01.10
15:31
(5) Ща замерю для фиб на семерке, восьмерке и лазарусе.
11 bvn13
 
20.01.10
15:33
подписался
12 marat61
 
20.01.10
15:34
буду чрезвычайно обязан :)
13 bvn13
 
20.01.10
15:36
для 1С код такой:

функция фиб(ч)
чч = 1;
 еси ((ч=1) или (ч=2)) тогда
   чч=1;
 иначе
   чч=фиб(ч-1)+фиб(ч-2);
конецесли;
возврат чч;
конецфункции

на любой версии пойдет (7*,8*)
14 mselling_ru
 
20.01.10
15:36
если в головах руководства постоянный бардак, и правила игры меняются чаще месячных, то однозначно 1С.
15 Волесвет
 
20.01.10
15:39
мдя...
про чудо-пилу слышали? мол умещается в кармане, пилит на раз два, даже фотки кто то выкладывал - здоровый балан сушняка пилят... все бы хорошо, но... почему то при лесозаготовках используют бензопилы))
16 Jstunner
 
20.01.10
15:42
в 1с есть функция сортировка, зачем писать свою?
А для вычисления числа Фибоначчи есть формула
17 Chai Nic
 
20.01.10
15:46
Считаю фиб(30)
На одном и том же компе результаты следующие:
Lazarus = меньше одной секунды
v7 = 5 секунд
v8.1 = 55 секунд
v8.2 = 65 секунд
Тесты проводились по три раза, отклонения незначительны.
18 myk0lka
 
20.01.10
15:48
Вертаемся на мотыги? :)
19 H A D G E H O G s
 
20.01.10
15:49
Фибоначи
Основание =20
Количество проходов:100

Дельфи6: 15 мсек.
1С 8.1.14.72: 17800 мсек.
20 Господин ПЖ
 
20.01.10
15:49
>>v7 = 5 секунд
>>v8.2 = 65 секунд

жесть... на 6.0 наверное будет приемлимо.
21 Господин ПЖ
 
20.01.10
15:50
ну как бы я об этом уже писал
22 mikecool
 
20.01.10
15:50
сегодня пятница? :)
23 Jstunner
 
20.01.10
15:50
надо на ассемблере
24 ado
 
20.01.10
15:50
(8) А вот не скажи. Всякие места в коде есть.
25 myk0lka
 
20.01.10
15:51
ВК?
26 Chai Nic
 
20.01.10
15:54
Удивило серьезное отставание 8.2 от 8.1.. Почему, интересно?
27 Phace
 
20.01.10
16:00
(26) Потому что клиент не предназначен для вычислений, все вычисления на сервере :)
28 H A D G E H O G s
 
20.01.10
16:05
Попробовал через ВК:
19 мсек

Исходные данные - те же.
29 H A D G E H O G s
 
20.01.10
16:05
Замеры производительности могут различаться.
30 Михаил Козлов
 
20.01.10
16:08
(5) Сделать недолго. Могу сделать и прислать табличку со временем выполнения расчета для разных n. Как будете сравнивать?
Если нужно - киньте контакт на мыло (в профиле).
Вот что получилось:
К    Ф    Время (сек)
20    6 765    1
21    10 946    1
22    17 711    1
23    28 657    2
24    46 368    3
25    75 025    6
26    121 393    9
27    196 418    15
28    317 811    23
29    514 229    39
30    832 040    63
31 Stagor
 
20.01.10
16:09
8-ка в 10 раз медленнее 7-ки! Жесть!
32 Господин ПЖ
 
20.01.10
16:09
автор пропал куда-то... в шоке наверное
33 myk0lka
 
20.01.10
16:10
(28) Всё таки ВК. Ну правильно....
34 Stagor
 
20.01.10
16:12
а если сравнивать, к примеру скорость заполнения и свертки таблиц значений?
35 IamAlexy
 
20.01.10
16:12
я правильно понял что раз из одного горного аула в другой горный аул по горным же тропкам ишак довозит быстрее чем например тойота камри (которая вообще там не проедет) то срочно всем и в обязательном порядке отказываться от тойот и пересаживаться на ишаков ?
36 orefkov
 
20.01.10
16:20
(13)
Фибоначи на рекурсии? Хм.

(28)
Благодаря вставкам на асме 1С порвет всех.
37 Phace
 
20.01.10
16:31
(36) "Благодаря вставкам на асме 1С порвет всех."

Было бы неплохо, по аналогии с той-же Дельфи, но только вот зачем нам ассемблер? Чтоб автора в (0) удовлетворять?
38 orefkov
 
20.01.10
16:43
(37)
Вот именно. Выбор инструмента зависит от задачи. Все нормальные люди не замеряют скорость в попугаях, а ищут узкое место, где не хватает производительности, и оптимизируют его. Если задача - массовые численные вычисления, то использовать 1С тут глупо, что понятно и без тестов.
39 hhhh
 
20.01.10
16:47
(30)  вариант не через рекурсию. В 8.1 выполняется << 1 секунды

функция фиб(ч)
   Сп = Новый СписокЗначений;
   Для ии = 1 По ч Цикл
         если ((ии=1) или (ии=2)) тогда
         СП.Добавить(1);
         иначе
           Сп.Добавить(Сп[ии-2].Значение + Сп[ии-3].Значение);
       конецесли;
   КонецЦикла;
   
   возврат Сп[ч-1].Значение;
конецфункции


так что, не надо.
40 Jstunner
 
20.01.10
16:47
кстати, ф(1000) обычным циклом считается менее чем за секунду..
результат: 43 466 557 686 937 456 435 688 527 675 040 625 802 564 660 517 371 780 402 481 729 089 536 555 417 949 051 890 403 879 840 079 255 169 295 922 593 080 322 634 775 209 689 623 239 873 322 471 161 642 996 440 906 533 187 938 298 969 649 928 516 003 704 476 137 795 166 849 228 875

Функция Ф(Н)
   
   А = 1;
   Б = 1;
   
   Для К=3 По Н Цикл
       Т = А + Б;
       А = Б;
       Б = Т;
   КонецЦикла;
   
   Возврат Б;
   
КонецФункции
41 acsent
 
20.01.10
16:55
Рекурсия вообще слабое место 1с
42 БТР
 
20.01.10
16:56
Как то давно сравнивал скорость работы с текстовыми файлами.
вышло что то вроде этого: C, Pearl = 2*C, 1Cv7.7 = 20*C
43 ado
 
20.01.10
16:58
(26) 20% это серьезное отставание? Серьезное отставание в вопросах производительности это в разы.
44 orefkov
 
20.01.10
17:00
(40)
Да, на асме или дельфях или jscript'е надо еще постараться получить такой результат...
45 Rovan
 
гуру
20.01.10
17:00
(+31) Win XP в несколько раз медленнее Win 98 ! :-)
46 marat61
 
20.01.10
17:01
Я поехал домой у нас уже вечер.
Данные действительно интересные.
Сижу анализирую.
Еще бы сравнить с JavaScript это классический интерпретатор с нежесткой типизацией.
Там так же как и в 1С - переменной можно присвоить любой тип данных.
47 Chai Nic
 
20.01.10
17:07
(43) Серьезное в том смысле, что мы имеем по сути одну систему, только разных версий, на первый взгляд такого не должно быть. Но в 8.2 работа со стеком очевидно сделана менее оптимально в силу каких-то причин.
48 supremum
 
20.01.10
17:07
Вот можно посмотреть, если интересно
http://rsdn.ru/article/devtools/CppPerformance.xml
49 Волшебник
 
20.01.10
17:07
(24) Места есть всякие, но тормозит в основном обращение к БД.
50 Axel2009
 
20.01.10
17:49
(49) обращение к структуре и к строкам дерева значений :(
51 Steban
 
20.01.10
17:59
lua

function fib(x)
 if (x==1) or (x==2) then
   return 1
 else
   return fib(x-1)+fib(x-2)
 end
end

t=os.clock()
q=fib(30)
print(os.clock()-t)

0.5 сек
52 marat61
 
20.01.10
18:25
Вот прога на fib.js
-------------------
у меня отработала за 1300 ms

function fib(n) {
 if ((n == 1) || (n == 2))
   return 1;
 else
   return fib(n - 1) + fib(n - 2);
}

function dateToString(d) {
 return d.getHours() + ":" + d.getMinutes() + ":" + d.getSeconds() + ":" + d.getMilliseconds();
}

var n = 30;
var fso;
fso = new ActiveXObject("Scripting.FileSystemObject");
file = fso.CreateTextFile("d:\\testfile.txt", true);
var start = new Date();
var s = "fib(" + n + ")=" + fib(n);
var finish = new Date();

s += " start: " + dateToString(start);
s += " finish: " + dateToString(finish);
s += " time: " + (finish - start) + " ms";
file.WriteLine(s);
53 marat61
 
20.01.10
19:13
код на Дельфи - 10 ms
---------------------
const n = 30;

function fib(n: integer): integer;
begin
 if (n = 1) or (n = 2) then
   result  := 1
 else
   result := fib(n - 1) + fib(n - 2);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 num: integer;
 timer: TxHPTimer;
 s: string;
begin
 timer := TxHPTimer.Create;
 timer.Reset;
 num := fib(n);
 Label1.Caption := Format('fib(%d) = %d time: %.5f sec',
   [n, num, timer.GetTime ]);
end;

end.
54 Chai Nic
 
20.01.10
19:18
Давай еще java (не скрипт), перл и питон для полной статистики )
55 Рэйв
 
20.01.10
19:18
у 1С обращение к базе написано на С++. Вот с ним и сравнивайте.1С только оболочка
56 Рэйв
 
20.01.10
19:18
+а может и на чем еще ниже..
57 Киборг
 
20.01.10
19:25
Знаешь что такое ассемблерные вставки и для чего они были нужны?

А для 1С, мне кажется, важнее скорость и, соответственно, стоимость автоматизации. И сравнивать с ней надо также именно учетные системы и в первую очередь по этим параметрам.

Гоночный болид очень быстрый. Купишь, чтобы на рыбалку ездить? :)
58 marat61
 
20.01.10
19:39
итог такой получается fib(30)
-----------------------------
Дельфи     - 0.01 sec (v 5)
JavaScript - 1.3 sec  (интерепретатор который идет с windows xp)
1C 7       - 5 sec
1C 8.1     - 55 sec
1C 8.2     - 65 sec
-----------------------

Вообще то странно это все.
Такое ощущение что программа даже в байт код не переводится.
Специалистам 1с есть еще где поработать.

Меня удивило что в рекомендациях 1с, они советуют не использовать составные имена и еще ряд странных для развитого языка рекомендаций.
Наглядность и простота оформления программ это важное качество языка.
Не хочется возвращаться к временам когда количество пробелов в коде влияет на производительность.

Такое ощущения что язык на уровне php 3 находятся, когда еще не было трансляции в байт код. Хотя 7 версия неплохие результаты показывает - по крайней мере всего в 4 раза хуже чем javascript. Может за счет меньшего на порядок размера библиотек и предметных классов.

Использование 1с для алгоритмов обработки больших объемов данных рискованно.
59 Chai Nic
 
20.01.10
19:49
(58) Вы мои данные сопоставляете со своими.. это не совсем корректно - у нас же разное аппаратное обеспечение.
60 mselling_ru
 
20.01.10
19:53
(58) 1C это не компилятор в привычном вам понимании, это среда быстрой разработки для задач учета.
61 H A D G E H O G s
 
20.01.10
19:59
Вот еще было бы интересно что.

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

Знать бы точность, с которой вычисляется платформенный Cos() - можно было бы сравнить скорость платформенной реализации с реализацией встроенным кодом.
62 marat61
 
20.01.10
20:09
> Знаешь что такое ассемблерные вставки и для чего они были нужны?

Использую, когда надо. Могу привести пример, для дельфи.

На практике, полезность в них для хороших компиляторов крайне низка.
Серьезные компиляторы GNU, MS, Borland оптимизирует код настолько хорошо, что ассемблерные вставки становятся бессмысленными.

Другой разговор, что многие программисты не знают цены тем или иным конструкциям языка и не знают какой код формирует компилятор. Ну это уже уход от темы.

Разработка больших систем - приводит к значительному увеличению кода и даже скорость сборки проекта становиться важной.

Чем php 4 был лучше по сравнению с php 3 тем что он был более быстрым, за счет введения промежуточного байт кода.

А чем лучше 1С 8 версии по сравнению с 7, увеличивается набор встроенных объектов и падает скорость встроенного языка на порядок.
Как то это не радует.
Версия 8.2 поддерживает трехуровневую архитектуру, тонкого клиента, но скорость еще ниже.
63 NcSteel
 
20.01.10
20:17
(62) Как производились замеры на 8.2? Надеюсь на сервере ?
64 Chai Nic
 
20.01.10
20:20
"1С 8 версии по сравнению с 7, увеличивается набор встроенных объектов и падает скорость встроенного языка на порядок"
На порядок в этом конкретном примере, с дикой рекурсией. Для учетных задач это не характерно. В случае итеративных алгоритмов скорость у восьмерки и семерки сравнима, различие даже не в разы. Хотя восьмерка разумеется медленнее.
(63) При чем здесь сервер? Мы же оцениваем быстродействие клиентских приложений на одной и той же машине. База там вообще не трогается.. идет работа с памятью.
65 H A D G E H O G s
 
20.01.10
20:22
(62) Ага. Приведи пример.
66 NcSteel
 
20.01.10
20:23
(64) Почитай рекомендации от 1с .

Если расчеты идут порядка минуты , то код надо выносить на сервер . Тем более предлагается вести большие мат операции . Клиент это только для вывода HTML формы на экран.
67 modestry
 
20.01.10
20:25
Постепенно 1С движется по быстродействию к системам написанных еще 10 лет назад на кларионе...
68 H A D G E H O G s
 
20.01.10
20:26
(66) То есть, для тонкого клиента 1cv8s.exe они по другому примитивные (+ - * /) функции реализовывали, чем для толстого, так?
69 H A D G E H O G s
 
20.01.10
20:27
(67) О, разработчик пожаловал.
70 NcSteel
 
20.01.10
20:28
(68) для тонкого клиента рекомендации код не сложнее 1+1 . То есть на клиенте должен выполняться оооочень простые комбинации.
71 marat61
 
20.01.10
20:28
> (58) Вы мои данные сопоставляете со своими.. это не совсем корректно - у нас же разное аппаратное обеспечение.

Компьютер у меня обычный интелловский пенёк,
на котором крутится еще десяток других приложений.
Pentium 4, 3.2 Ghc

код для js я привел, он может быть запущен на любой винде
Вставь в файл и сохрани как fib.js и запусти из командной строчки.

После можно понять насколько он соотносится с моими цифрами.
72 dk
 
20.01.10
20:29
как-то сверял мат. операции (умножение) 7-ка / 8.1 / vbs
1. vbs
2. 7-ка
3. 8.1
---
соотношение не помню точное, но превышение в 5 .. 10 раз было
73 H A D G E H O G s
 
20.01.10
20:30
(70) NcSteel, ты меня поражаешь.
74 NcSteel
 
20.01.10
20:32
(73) Чем интересно )
75 los_hooliganos
 
20.01.10
20:33
(71) Интересно, программистов заставляют метрологию изучать?
76 supremum
 
20.01.10
20:37
Интересно можноли писать сей час эффективный быстрый код для современных процессоров, реальный код? Скорее всего нет. Плюс куча проблем по оптимизации для разных проциков. Если для поколения первых пентиумов можно было вручную делать оптимизацию под полную загрузку конвееров, то для 4 пентиума это стало бессмысленно. ИМХО современный компилятор сделает код лучше, например оптимизируещий компилятор от Интел, чем заниматься ручной оптимизацией. Можно еще вспомнить причины возникновения архитектуры VLIW, после провала архитектуры RISC и сколько после этого было выполнено работы по созданию эффективных оптимизирующих компиляторов. Но это только к слову. А так, сравнива теплоход и паровоз смысла нет. Для разных задач предназначены эти вещи. Для сильно разных задач.
77 Snovy
 
20.01.10
20:37
(70) Судя по коду модулей обработки проведения в УНФ, не только на клиенте, но и на сервере код должен быть не сложнее 1+1 (все вынесено в запросы к более умному приложению типа скуля или чего там за сервером 1С находится...)
78 H A D G E H O G s
 
20.01.10
20:38
(74) постом (70), ну и хотя бы этим
v8: Рег. сведений, как заменить значение?
79 i-rek
 
20.01.10
20:40
А при замерах в 8ке конфигуратор запущен был ? Если конфигуратор в режиме отладки - замедление большое
80 marat61
 
20.01.10
20:40
Какая разница, есть рекурсия или нет рекурсия.

Можешь мне поверить что дело не в ней, а в нагрузке на процессор.
Просто, алгоритм расчета числа фибоначи через рекурсию создает хорошую нагрузку на процессор. Количество вызовов функции нелинейно зависит от входного параметра.
То есть вычисление числа фибоначи каждый раз требует повторного вычисления ранее полученных результатов.

Ты можешь попробовать реализацию сортировки пузырьком. В ней количество сравнений и зависит квадратично от количества строк (n*n).
Там время сортировки начнется измеряться в секундах, при небольших n.
Более лучшие алгоритмы сотрировки тип quick sort имеют зависмотсь n*log(n).
То есть тормозить они будут на больших n.

Кстати можно было бы оцениь как 1с работает  с массивами.
81 i-rek
 
20.01.10
20:42
И ещё.. не делались ли тесты во внешних обработках ? Тогда стоит включить их в конфижку
82 marat61
 
20.01.10
20:50
> i-rek

Все может быть.
Желательно привести код для тестирования прозводительности.
Я вот для Дельфи вынужден был использовать библиотеку для подсчета скорости.
Через счетчик тактов процессора, которая аналдогична тем которая в профайлерах испольуется. Так как либа на основе системного времени уже недостаточно точные цифры выдает для fib(30).

приведу ее код, писали сами
---------------------------
unit grdTimer;

interface

uses
 Windows;

type
 THiTimer = TLargeInteger;
 
 TxHPTimer = class
 private
   FPerformanceFrequency: THiTimer;
   FTimer: THiTimer;
   FLastValue: Double;
 public
   constructor Create;
   procedure Reset;
   function GetTime: Double;
   property LastValue: Double read FLastValue;
 end;

implementation

{ TxHPTimer }

constructor TxHPTimer.Create;
begin
 inherited Create;

 QueryPerformanceFrequency(FPerformanceFrequency);
end;

function TxHPTimer.GetTime: Double;
var
 last: TLargeInteger;
begin
 QueryPerformanceCounter(last);
 if last < FTimer then
   Result := 0.0
 else
   Result := (last - FTimer) / FPerformanceFrequency;
 FLastValue := Result;
end;

procedure TxHPTimer.Reset;
begin
 QueryPerformanceCounter(FTimer);
end;

end.
83 NcSteel
 
20.01.10
20:50
(78) Читаю книгу и вижу:

Для того что бы форма работала работала быстро и эффективно, нужно стремится к следующему:

максимум вычислений должно выполняться на сервере;
84 i-rek
 
20.01.10
20:53
и ещё - раз появились сомнения в том что код скомпилировался, для чистоты эксперимента сделать поставку без исходных модулей.

Вообще раньше где-то видел данные, что интерпретатор 8ки на 20% медленнее 7ки.

Но не в 10 раз никак
85 Rie
 
20.01.10
20:56
(82) Такое ощущение, что ты пытаешься сравнивать непонятно что с непонятно чем.
Скорость _интерпретатора_ (пусть даже скомпилированного кода) 1С-ика со скоростью непосредственно машинного кода в Delphi.
Вставь в программы на Delphi и на 1С обращения к OLE. Насколько сильная разница в скорости будет?
86 modestry
 
20.01.10
20:57
(85) Сравни скорость выполнения запросов к СУБД на DElphi И на 1С...
87 i-rek
 
20.01.10
20:57
как забавно яростно 1Снеки защищают 1С, хотя на неё особо никто и не нападал ))
88 modestry
 
20.01.10
20:58
(87) Ну дык, нормальных систем не видели....
89 i-rek
 
20.01.10
20:58
Если мы указываем в тестах 8.2, то надо указать - сервер или толстый клиент или тонкий клиент
90 i-rek
 
20.01.10
20:58
или веб-клиент ))
91 i-rek
 
20.01.10
20:59
И если это 8.2 - то не бета ли это версия.
92 Rie
 
20.01.10
20:59
(86) К СУБД 1С? :-)
93 H A D G E H O G s
 
20.01.10
21:00
(80) Мдать, неужели я понял.

В Дельфях то регистры используются для передачи параметров.
А если сделать Фибоначи с stdcall; ?
94 Chai Nic
 
20.01.10
21:00
(64) Кто вообще говорил о тонком клиенте?
95 Rie
 
20.01.10
21:00
(93) Всё равно на Delphi шустрее получится, IMHO.
Передача параметров там - не единственная операция.
96 supremum
 
20.01.10
21:01
Ужасть!

Кто сегодня самый шустрый?
http://rsdn.ru/article/devtools/perftest.xml

кажется все достаточно подробно разжевано.
97 supremum
 
20.01.10
21:03
+(96) Хоть статейка слегка устарела но основные моменты отражены.

В ней сравниваются
C#
Java
VC
Intel C++    
Delphi    
VB
98 NcSteel
 
20.01.10
21:04
(89) +1.
99 Rie
 
20.01.10
21:05
(97) В ней тоже что-то не то сравнивается.
Список языков такой, что быстродействие зависит не от языка, а от качества компилятора.
100 Chai Nic
 
20.01.10
21:07
(98) Завтра на работе сделаю сравнение тонкого и толстого клиента..
101 supremum
 
20.01.10
21:09
(99) Там еще интересный момент показан про то какую оптимизацию делают компиляторы. И немного теории рассказано, о том какие методы выполнения коды есть. А так выбор языков и платформ интересный. (сотку испорчу?:)
102 sam_sam
 
20.01.10
21:09
(0) Беспредметный разговор какой то. Скажи чего хочешь сделать, а мы тебе скажем нужно ли тебе это на 1С делать. VB тоже быстродействием не блещет, однако за него платят бабло на  западе, а дельфисты пишущие на супер быстром дельфи(в сравнении с тем же VB) тихо дохнут в сторонке. Все хорошо для своих задач. Все говорят аксапта хорошо, но пообщавшись с аксаптерами кажется что 1С это рай. SAP говорят, что круто, сами саперы говорят что немцы придумали SAP в отместку за сталинград.
103 supremum
 
20.01.10
21:11
(102) Ну а как же померяться быстродействием расчета ряда фибоначчи?? :)
104 Rie
 
20.01.10
21:13
(103) На Фибоначчи мерить - это уж точно нонсенс.
+ в 1С и + в Delphi - это немножко сильно разные операции.
105 supremum
 
20.01.10
21:15
(104) Да, наверное. Вообще в этом прагматик. Всему свое место и время.
106 Rie
 
20.01.10
21:16
(101) Именно что сравниваются методы оптимизации.
Для чистоты эксперимента надо было бы взять Intel C++, Microsoft C++ и Borland C++.
107 supremum
 
20.01.10
21:19
(106) А это есть (правда уже приводил, но...)

Сравнение компиляторов C++
http://rsdn.ru/article/devtools/CppPerformance.xml

Меня просто удивила эта тема. Тестировать учетную систему на быстродействие рекурсий и расчета ряда фибоначчи как то странно.
108 dk
 
20.01.10
21:21

Функция Тест1С(Количество)
   Перем Результат;
   
   Результат = 0;
   
   Для Сч = 1 По Количество Цикл
       Результат = Результат + Сч;
   КонецЦикла;
   
   Возврат Результат;
   
КонецФункции // Тест1С()

Функция ТестВБС(Количество)
   Перем Результат;
   
   Результат = 0;
   
   ScrptCtrl=СоздатьОбъект("MSScriptControl.ScriptControl");
   ScrptCtrl.Language="vbscript";
   
   ТекстКода = "
   |Function MyFunc(Num)
   |Dim Result
   |    Result = 0
   |    For i=1 to Num
   |        Result = Result + i
   |    Next
   |    MyFunc = Result
   |End Function";
   
   ScrptCtrl.AddCode(ТекстКода);
   Результат = ScrptCtrl.Eval("MyFunc("+Строка(Количество)+")");
   
   
   Возврат Результат;
   
КонецФункции // ТестВБС()

Процедура Сформировать()
   
   ОчиститьОкноСообщений();
   
   Для Сч = 1 По 10 Цикл
       Нач = _GetPerformanceCounter();
       Рез = Тест1С(ВыбЧисло);
       Кон = _GetPerformanceCounter();
       Сообщить(Шаблон("Тест1С: время: [Кон-Нач] результат:[Рез]"));
   КонецЦикла;
   
   Сообщить("--------------------------------------------------------------------------------");
   
   Для Сч = 1 По 10 Цикл
       Нач = _GetPerformanceCounter();
       Рез = ТестВБС(ВыбЧисло);
       Кон = _GetPerformanceCounter();
       Сообщить(Шаблон("ТестВБС: время: [Кон-Нач] результат:[Рез]"));
   КонецЦикла;
   
   Сообщить("--------------------------------------------------------------------------------");
   
   Для Сч = 1 По 10 Цикл
       Нач = _GetPerformanceCounter();
       Рез = Тест1С(ВыбЧисло);
       Кон = _GetPerformanceCounter();
       Сообщить(Шаблон("Тест1С: время: [Кон-Нач] результат:[Рез]"));
   КонецЦикла;
   
   Сообщить("--------------------------------------------------------------------------------");
   
   Для Сч = 1 По 10 Цикл
       Нач = _GetPerformanceCounter();
       Рез = ТестВБС(ВыбЧисло);
       Кон = _GetPerformanceCounter();
       Сообщить(Шаблон("ТестВБС: время: [Кон-Нач] результат:[Рез]"));
   КонецЦикла;
   
КонецПроцедуры

Результаты
Тест1С: время: 6764 результат:12500002500000
Тест1С: время: 6778 результат:12500002500000
Тест1С: время: 6787 результат:12500002500000
Тест1С: время: 6831 результат:12500002500000
Тест1С: время: 6861 результат:12500002500000
Тест1С: время: 6806 результат:12500002500000
Тест1С: время: 6751 результат:12500002500000
Тест1С: время: 6778 результат:12500002500000
Тест1С: время: 6782 результат:12500002500000
Тест1С: время: 6761 результат:12500002500000
--------------------------------------------------------------------------------
ТестВБС: время: 2208 результат:12500002500000
ТестВБС: время: 2183 результат:12500002500000
ТестВБС: время: 2184 результат:12500002500000
ТестВБС: время: 2191 результат:12500002500000
ТестВБС: время: 2197 результат:12500002500000
ТестВБС: время: 2202 результат:12500002500000
ТестВБС: время: 2218 результат:12500002500000
ТестВБС: время: 2298 результат:12500002500000
ТестВБС: время: 2212 результат:12500002500000
ТестВБС: время: 2197 результат:12500002500000
--------------------------------------------------------------------------------
Тест1С: время: 6791 результат:12500002500000
Тест1С: время: 6809 результат:12500002500000
Тест1С: время: 6766 результат:12500002500000
Тест1С: время: 6763 результат:12500002500000
Тест1С: время: 6770 результат:12500002500000
Тест1С: время: 6758 результат:12500002500000
Тест1С: время: 6794 результат:12500002500000
Тест1С: время: 6776 результат:12500002500000
Тест1С: время: 6792 результат:12500002500000
Тест1С: время: 6833 результат:12500002500000
--------------------------------------------------------------------------------
ТестВБС: время: 2208 результат:12500002500000
ТестВБС: время: 2195 результат:12500002500000
ТестВБС: время: 2193 результат:12500002500000
ТестВБС: время: 2191 результат:12500002500000
ТестВБС: время: 2178 результат:12500002500000
ТестВБС: время: 2208 результат:12500002500000
ТестВБС: время: 2218 результат:12500002500000
ТестВБС: время: 2211 результат:12500002500000
ТестВБС: время: 2201 результат:12500002500000
ТестВБС: время: 2198 результат:12500002500000
----
т.е. vbs в 3 раза шустрее 7-ки
109 Злопчинский
 
20.01.10
21:34
м.б. интересно в тему: http://infostart.ru/public/57165/
110 sam_sam
 
20.01.10
21:47
Поймайте любого программиста, сишника или другого джависта за ухо и спросите что он скажет про 1С. Скажет 1С - гумно, и в общем то он прав. Однако знаю предприятие причем довольно успешное и здоровое, образованное лет 15 назад. Так в нем все учредители бывшие программисты. И учет как ОУ так и БУ производится в 1С. Очень странно получается, каждый программист плюет на 1С до тех пор пока речь не заходит про учет собственных кровных. В чем прикол? А ларчег открывается просто, был у них фокспрошник писал для них софт. Потом пришел и сказал,
- хочу больше денег!
- А за что больше денег?
- Просто так больше денег!
-хрен тебе.
-ну и пошли на...
Забрал все исходники и свалил. Люди не долго горевали, плюнули ему в след и перешли году в 97 еще того века на 1С. С тех пор нормально себя чувствуют. А если кто из 1С ников залупаться начинает просто посылают на... да и все. Платформа то открытая, свистни только и десяток голодных одинэсников набежит.
111 sam_sam
 
20.01.10
21:51
(+110) Так что с точки зрения разработки бизнес приложений, принимаются в расчет совсем другие факторы. Такие как: стоимость софта, стоимость разработки, стоимость сопровождения. А быстродействие это уже десятый фактор. Вот я собственно у автора и спрашиваю. (0) С какой целью интересуешься? Бизнес буржуям автоматизировать или декодер на шифрованный канал писать. Если второе 1С однозначно не потянет.
112 dk
 
20.01.10
21:51
(108)+
в 8-ке время такое же как в 7-ке
113 sam_sam
 
20.01.10
22:15
А еще один момент кто то рассказывал про разработку и сопровождения банковского ПО некого банка. В банковском деле 1С, ну пока никак кроме бухгалтерий наверное. Так там чуваки на си++ пишут. А пишут примерно командой из 15 может больше х.з. рыл так. На каждого программиста который программирует, еще один проверяет его код на читабельность, еще один до кучи, что бы был в курсе того что натворили первые два. Состав двоек, троек постоянно меняют, чтобы не сговорились и не отчудили чего. Например не смотались прихватив исходный код.
зы
Вот так страдают бедные банкиры, поэтому и отрываются за грехи программистов на населении. Жаль людей.
114 modestry
 
20.01.10
22:17
(113)  На С не везде, видел в банке и дос окошки..
115 modestry
 
20.01.10
22:19
(110) Да, есть еще поделки, глядя на которые, представителя франча, говорях ух как быстро работает..быстрее упп....
116 Snovy
 
20.01.10
22:21
(113) У нас банк на самописке на фокс-про 2.0 работал. Шел 1994 год...
117 Snovy
 
20.01.10
22:21
(116)+ кстати код тоже открытый :)
118 Snovy
 
20.01.10
22:23
(117)+ и как работало то быстро... Одна из ...Нефтей недавно прислала скриншоты для понимания что им нужно. До сих пор системы под ДОСом. Я им завидую. Скорость несравнимая со всеми нынешними новомодными системами.
119 sam_sam
 
20.01.10
22:31
(116) я не знаю как на фокспро пишут, может там код и открытый. Но чего то тот товарищ прихватил однако. Без чего его систему не сопровождать не дорабатывать стало не возможно. Может мозги, а может еще что то.

(118) Разве прочитав мои сообщения ты еще не понял, что программисты на самом деле мразь самая последняя. Так и думают, как бы и чем из буржуев бабло вынуть и потом шантажировать. Интересно если бы был, коммунизм были бы программисты? Думаю что нет.
120 Snovy
 
20.01.10
22:38
(119) Второй абзац. Да все нормально. Сейчас больше всего прикадывает борьба Линукс против Винды. Слежу с упоением. МуСКЛ потихоньку умирает (счет пошел на месяцы). А сколько на него завязано. Завтра Линукс сожрет винду, а потом обществу надоест бесплатно разрабатывать Линукс ( а случится это на следующий день после смерти майкрософта ) и что будет с радетелями СПО - начнется разработка другого СПО? или что?
В общем все интересно и непонятно. Остается считать года до пенсии...
121 modestry
 
20.01.10
23:47
(120) Врятли...
122 acsent
 
20.01.10
23:59
(120) Основные опенсорс проекты, типы Linux, ff разрабатывает не общество, а большие корпорации
123 marat61
 
21.01.10
05:54
> (0) Беспредметный разговор какой то.
тема определена конкретно

> Скажи чего хочешь сделать, а мы тебе скажем нужно ли тебе это на 1С делать.

SAAS приложение - приложение учетное. Не для западного рынка, для рынка бывшего СНГ, понятно что должна быть хорошая связь с 1с. Самая хорошая это если на самой 1с сделать. Предприятия небольшие - от 5 до 100 пользователей. Однако есть опасения, что 1с для обработки кучи предприятий не попрет, из за того что КПД у него низкий. Разработка на ней эффективная и быстрая, а вот движок может не потянуть.

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

VB давно компилятор и скорость сравнима с другими компиляторами. С Дельфой в одной нише. Дельфи хочу заметить, находиться в первой двадцатке и когда сравнивают языки то обычно сравнивают его с С или С++. Понятно же, что это делают серьезные люди и не только для того чтобы просто поиздеваться и пофлудить.

> Все говорят аксапта хорошо, но пообщавшись с аксаптерами кажется что 1С это рай. SAP говорят, что круто, сами саперы говорят что немцы придумали SAP в отместку за сталинград.

Предлагаю делать оценку объективно а не по системе ОБС (одна баба сказала).
http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
Это на чем проекты делают.
Вот видно: кто дохнет, а кто на коне.

http://www.indeed.com/jobtrends?q=C%23%2C+Java%2C+PHP%2C+Go&l=
Это потребность в работе для разных языков.
Набираешь что тебя интересует и сравниваешь. Данные в ней собираются от  потребностей джоб-хантерских фирм, располагающих в США и в Европе. Мне кажется без учета потребностей СНГ.
124 VladZ
 
21.01.10
06:00
(0) Фибоначи на 1С? Завязывай так курить...
125 VladZ
 
21.01.10
06:07
+124 А давайте на 1С будет 3D-сцены рендерить... Проверим, как 1с-ка с этим справится.
126 marat61
 
21.01.10
06:40
> +124 А давайте на 1С будет 3D-сцены рендерить... Проверим, как 1с-ка с этим справится.

1с хорошо дружит с COM.
Берем дельфи пишем на ней 3D-сцены с использованием directX или  openGL, оформляем как COM.
Дальше продолжать не буду ...
умный поймет
127 Chai Nic
 
21.01.10
08:05
(79) Действительно, без режима отладки восьмерка считает значительно быстрее.
Вот новые результаты:
7.7 - 5 секунд
8.2 в тонком и толстом клиенте - 7 секунд
То есть, реально замедление совсем небольшое. Приношу извинения за неучтенный фактор эксперимента.
128 marat61
 
21.01.10
08:31
Всем большое спасибо!
С учетом последних замечаний итог получается следующий.
Время затраченное на рекурсивное вычисление числа фибоначи fib(30)
для разных языков программирования
-------------------------------------------------------------------
Язык         время (сек)   примечание
-------------------------------------------------------------------
Дельфи 5     0.01        
LUA          0.5
JavaScript   1.3         интерпретатор, который идет с windows xp
VBScript     1.3         интерпретатор, который идет с windows xp
1C 7.7       5
1C 8.2       7           на тонком и толстом клиенте
-------------------------------------------------------------------
Для полноты картины, хотелось бы  добавить сюда axapta, navision и php.

Ссылка http://rsdn.ru/article/devtools/perftest.xml
содержит сравнение производительности для шести языков для реализации алгоритма быстрой сортировки quick sort:
-------------------
VC 6         16.61
C# (.Net)    16.73
Intel C++    17.63
Delphi       16.77
Java         24.49
VB 6         27.01
-------------------
То есть скорость этих языков находятся примерно на одном уровне (разница в процентах, а не разах)
129 Chai Nic
 
21.01.10
08:52
(128) Я думаю, для 1с более низкая скорость объясняется тем, что числовой тип данных является сложным типом, не отображаемым напрямую на поддерживаемый процессором размер машинного слова.
130 supremum
 
21.01.10
09:01
В конкурсе доменной печи, кита, грибов и паравозов победили вирусы :)
131 marat61
 
21.01.10
09:09
> Chai Nic
Александр, я хотел бы полученные данные положить в wiki.
Можно я воспользуюсь Вашими экспериментальными данными.
Идеально конечно было бы, чтобы Вы запустили, хотя бы программу на JavaScript на своей машине. Тогда бы они были бы в большей степени сравнимы и можно было бы говорить об одинаковых условиях проведенных испытаний.

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

Согласен. Дело в том, что когда переменная всеядна и ей можно присвоить любой тип данных это говорит о способе реализации.
По сути дела это Variant и работа с ним выполняется намного медленее.
Потому как каждое присваивание это проверка а можно ли это сделать а не надо ли преобразовать этот тип в другой и все это во время исполнения программы.

Я думаю, в Axapta или Навижн картинка будет лучше.

Так же я думаю в 1с активно используются вызов через дисп интерфейс, а это значит поиск метода по таблице имен, а не вызов конкретного метода объекта.

Использование COM объектов посредством библиотеки типов TLB (раннее связывание во время компиляции) позволило бы значительно увеличить производительность.
132 H A D G E H O G s
 
21.01.10
09:14
<<Согласен. Дело в том, что когда переменная всеядна и ей можно присвоить любой тип данных это говорит о способе реализации.
По сути дела это Variant и работа с ним выполняется намного медленее.
Потому как каждое присваивание это проверка а можно ли это сделать а не надо ли преобразовать этот тип в другой и все это во время исполнения программы.
>>

НЕТ, Chai Nic говорит не про это!
133 H A D G E H O G s
 
21.01.10
09:16
В 1С можно выполнить следующую операцию
a=100000000000000000000000000000000000000000000000000000000000000000
b=200000000000000000000000000000000000000000000000000000000000000000
c=a+b
c=300000000000000000000000000000000000000000000000000000000000000000
134 AlStorm
 
21.01.10
09:17
(133)
То есть есть встроенный модуль работы со сверхбольшими числами.
135 H A D G E H O G s
 
21.01.10
09:18
(134) Ну типа того.
136 wt
 
21.01.10
09:22
(110) аналогично. Правда периодически приходят "уникомы", л а п ш ы некоторым начальникам навешают, приходится долго объяснять. Но как только нужен быстрый результат, все дружно забывают "передовые" технологии. Когда напряг спадает - снова-здорова.
137 rsv
 
21.01.10
09:32
(0) Вести подсчет на клиенте 1С ?????
138 rsv
 
21.01.10
09:36
+(137) Максимум это форму ввода заполнить и выполнить Записать()т.е insert(update). Хотя  запихивают такие алгоритмы расчета на клиенте  в транзакцию insertа   штааааааааа.
139 Chai Nic
 
21.01.10
09:47
(131)"Идеально конечно было бы, чтобы Вы запустили, хотя бы программу на JavaScript на своей машине. "

fib(30)=832040 start: 9:46:14:528 finish: 9:46:15:794 time: 1266 ms
140 Chai Nic
 
21.01.10
09:52
(133) Что интересно, возможность эта недокументированная. В справке написано, что "Числовым типом может быть представлено любое десятичное число. Над данными числового типа определены основные арифметические операции: сложение, вычитание, умножение и деление. Максимально допустимая разрядность числа 38 знаков.".
141 orefkov
 
21.01.10
10:12
(140)
Скорее всего справка со старых версий не переписали.
Судя по устройству CNumeric в 7ке, количество знаков не ограниченно.
Так что те реализации расчета фибоначчи, которые использовались для дельфи и jscript'а банально сольют 1С при расчете фиб(1000), ибо вернут неверный результат.
142 Kuzen
 
21.01.10
10:14
"VB тоже быстродействием не блещет" по моему сейчас в visual studio последних скорость скомпилированного модуля будет jlbнаковой для всех языков.
143 AlStorm
 
21.01.10
10:14
(141)
Даже если прикрепить модуль работы с сверхбольшими числами(в C# 3.5 он есть встроенный), то все равно на них будет быстрее:)
144 orefkov
 
21.01.10
10:25
(143)
Вот. То есть на голом языке в лоб не сделать, что-то надо прикручивать. Так к 1С я тоже могу что угодно прикрутить.
В так, вообще, тупой вопрос рождает тупую ветку.
145 AlStorm
 
21.01.10
10:27
Ладно, по сути язык 1с намного проще устроен чем vb, то и интерпретация код а на нем должна выполнятся на порядок быстрее.
146 Jstunner
 
21.01.10
10:29
нет никакой прямой зависимости скорости от простоты..
147 AlStorm
 
21.01.10
10:32
(146)
не выдумывай...
Самый простой пример. Есть текст с кодом на каком-то языке. Берется первый оператор и ищется в списке всех операторов языка. Находится. Потом проверяется, сколько перегрузок у него есть и соответственно сверяет с операторами, передаваемыми в этот метод... Находится нужная перегрузка, потом уже код оператора выполняется.
А если список операторов маленький, и перегрузки язык не поддерживает?
Скорость возрастет на порядок.
148 H A D G E H O G s
 
21.01.10
10:33
(147) Про то, что такое компиляция - слышали?
149 Jstunner
 
21.01.10
10:33
вот ты уже описал неоптимальный вариант поиска. отсюда ноги и растут..
150 AlStorm
 
21.01.10
10:35
(148)
В 1с есть компиляция?
151 H A D G E H O G s
 
21.01.10
10:36
(150) <<Самый простой пример. Есть текст с кодом на каком-то языке.>>
152 Chai Nic
 
21.01.10
10:36
(150) Надо будет проверить, влияет ли на скорость работы длина имен.
153 AlStorm
 
21.01.10
10:39
(151)
Но сабж то о 1с:)
И вообще, компилируемых языков становится все меньше, остался только старый добрый C++. Остальные (Java, C#, PHP, VB) интерпретируемые. Точнее не интерпретируемые, а... блин, как-то по-другому они называются:)
154 orefkov
 
21.01.10
10:39
(150)
Конечно есть. Модуль компилится при загрузке в байт-код, который и выполняется. Альфовский КЗК-2 так и работает, что компилит модуль заранее, текст модуля выкидывается, а при загрузке модуля сразу подсовывает заранее рассчитанный байт-код.
155 Jstunner
 
21.01.10
10:40
JVM компилирует байт код в нативный при выполнении (JIT)
156 AlStorm
 
21.01.10
10:41
(154)
Ну ладно, тогда мы можем сравнить байт-код 1с и jit-код NETа. В любом случае, jit код работает быстрее при намного большей сложности, что говорито неоптимизированности 1с
157 Jstunner
 
21.01.10
10:42
JIT (Just In Time) - это не код, а компиляция байт кода в нативный, "на лету"..
158 Chai Nic
 
21.01.10
10:42
(154) Подтверждаю, проверил, от длины идентификаторов скорость выполнения не зависит - следовательно генерится псевдокод.
159 orefkov
 
21.01.10
10:43
(156)
NET'овский код при выполнении преобразуется в нативный код целевой платформы, а 1Сный байт-код выполняется 1Совской же виртуальной машиной.
160 marat61
 
21.01.10
10:43
> (131)"Идеально конечно было бы, чтобы Вы запустили, хотя бы программу на JavaScript на своей машине. "

> fib(30)=832040 start: 9:46:14:528 finish: 9:46:15:794 time: 1266 ms

Спасибо, цифры отличаются от моих менее чем на 10%.
То есть наши компы примерно одинаковы и данные в табличке достоверны.

Информация про супердлинные числа, которые поддерживаются в 1с интересная.
Вероятно, он не всегда такой режим включает?
161 Jstunner
 
21.01.10
10:44
такая арифметика - по умолчанию
162 H A D G E H O G s
 
21.01.10
10:44
(160) Восьмерка - всегда.
163 orefkov
 
21.01.10
10:45
(158)
Насчет зависимости от длины идентификаторов тоже не совсем верное утверждение. Иначе я бы не создавал TurboBL.
164 H A D G E H O G s
 
21.01.10
10:45
(159) Вы в восьмерке ковырялись?
165 marat61
 
21.01.10
10:47
Язык Go компилируемый с жесткой типизацией данных.
Вот оно будущее всего человечества.

Через два месяца сразу попасть в топ 20.
и количества заявок на программистов уже зашкаливает заявки на другие языки.

http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
на каких языках проекты делают

http://www.indeed.com/jobtrends?q=C%23%2C+Java%2C+PHP%2C+Go&l=
потребность в программистах для разных языков.
166 orefkov
 
21.01.10
10:47
(160) 1С создавалась в лихие 90е. Напомнить, какие тогда суммы бабок ходили?
А считать все требовалось до копеек...
167 orefkov
 
21.01.10
10:49
(164) В 8ке лично я - нет.
Вроде Альф там что-то роет. Однако наличие декомпилера для 8ки как бы намекает...
168 AlStorm
 
21.01.10
10:51
(165)
Это потому-что гуглы создали его.
На самом деле почти аналог Си.
169 marat61
 
21.01.10
10:51
Вообще я команду 1с уважаю.

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

Почему даже JavаScript его делает разов так в три-четыре?
Такой же интерпретатор с нежесткой типизацией данных.
170 Jstunner
 
21.01.10
10:57
ты что такого жесткого собираешься делать на языке 1с? видеокодек?
171 H A D G E H O G s
 
21.01.10
10:57
(167) Нет его в аське. Ну да ничего, подождем.
172 orefkov
 
21.01.10
11:13
(169)
Уверяю тебя - отставание скорости работы интерпретора 1С от JScript - совершенейшая мелочь в тех задачах, для которых обычно юзается 1С.
Особенно по сравнению с тем, как 1С обращается с SQL'ем :)
Ни разу не встречал ситуации, когда проблема упиралась в скорость работы виртуальной машины 1С, разве что в шахматах от NS.
173 marat61
 
21.01.10
11:30
Согласен.
С учетом разрядности арифметики которую поддерживает 1с,
наверное это хороший результат.
174 fisher
 
21.01.10
11:47
Народ знающий! Подскажите, в какой момент времени 8-ка компилит исходники модулей в байт-код? 7-ка делала это при загрузке модуля. По-поводу 8-ки не помню откуда, но в голове отложилось, что вроде бы в конфе параллельно хранятся исходники и байт-код. Т.е. компиляция по-идее происходит при сохранении конфы. Так это или приснилось мне?
175 truba
 
21.01.10
11:48
а шо у нас на дельфи уже можно строковую переменную суммировать с числовой? лет n назад еще нельзя было, походу я устарел..
176 VladZ
 
21.01.10
11:57
+133 1111111111111111111111111111111111111111111111111111111111111111*9 = 9999999999999999999999999999999999999999999999999999999999999999
177 fisher
 
21.01.10
11:59
(173) Не уверен, что хороший. Главное - что достаточный. Элементарные операции в общей производительности прикладного решения на 1С составляют обычно доли процента. Остальное - операции с БД.
178 Stagor
 
21.01.10
12:19
(168) Гугл крадет все - ХромОС, Андроид (Linux) Go (C,java,C#)
Нет, что бы что то своё с нуля!
179 H A D G E H O G s
 
21.01.10
12:26
(176)
1331111111111111111111111111111111111111111111111111111111111111111*9=11 979 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999 999
180 Сияющий Асинхраль
 
21.01.10
12:44
(0) Найди книженцию О.В. Бартеньев "1С:Предприятие опыты программирования" там есть очень доступное сравнение скорости работы 1С. Первое попавшееся в этой книженции сравнение времени заполнения массива из миллиона элементов в фортране и 1С. Циферки таковы?
1С8 Массив 1000000 элементов Заполнение 10 сек, сортировка 249 сек
1С8 Таблица значений 1000000 элементов заполнение 35 сек, сортировка 8 сек
Фортран Массив 1000000 элементов Заполнение 0.03 сек, сортировка 0,36 сек
Так что скорость работы 1С мягко говоря оставляет желать лучшего, реально 1С берет не скоростью работы, а скоростью и стоимостью разработки приложений, поскольку иным она похвастаться не может...
181 Jstunner
 
21.01.10
12:48
кстати, странно, что никто не обратил внимание на это раньше..
Простейшая задача вычисления числа Фибонначи, которая обязана выполняться за время O(N), в предложенном топикакастером алгоритме для Н==30 делает 1 664 079 итераций..

Короче, надо копать не в сторону 1с
182 Chai Nic
 
21.01.10
12:56
(181) :) Это бенчмарк, а не задача.
183 orefkov
 
21.01.10
12:59
(181)
Да обратили уже внимание. И реализацию уже дали для 1С, считает фиб(1000) за секунду.
184 orefkov
 
21.01.10
13:00
+(183) Это как в армии говорят - "мне не надо, чтобы ты сделал быстро. Мне надо, чтобы ты за..бался"
185 vde69
 
21.01.10
13:13
я упирался в быстродействие 1с, особенно при задачах трехмерной геометрии, да и вообще реализация операций с плавающей точкой, очень медленная. (делал оцифровку 3д облаков методом триангуляции).

реально просто надо было вынести часть кода в DLL и не париться :)

я считаю 1с очень медленной при работе с математикой, и вполне нормальной при работе с таблицами и прочими сложными обьектами
186 orefkov
 
21.01.10
13:25
(185)
Половины математики в 1С вообще нет, ибо бухгалтерам корни и синусы считать ни к чему.
А делать "оцифровку 3д облаков методом триангуляции" на 1С - та еще жесть...
187 PowerBoy
 
21.01.10
13:33
(174) восьмерка компилит при открытии модуля
188 H A D G E H O G s
 
21.01.10
13:50
(186) в шоке.

Да все там есть, в восьмерке то-бишь
189 nop
 
21.01.10
13:51
(0) скриптовые языки всегда медленнее
190 orefkov
 
21.01.10
14:02
(188)
От я старый ретроград, по привычке тока про 7ку думаю, извините.
191 H A D G E H O G s
 
21.01.10
14:10
(190) Мне вот еще что интересно - см (61)
192 Jstunner
 
21.01.10
14:36
он скорей всего не так считается..

вот копипаст синуса из сишного math.c быстро переделанный под 1с

Функция Синус(x)

   xi = x; sign = 1;
   while (xi < -1.57079632679489661923) do
       xi = xi + 6.28318530717958647692;
   enddo;
   while (xi > 4.71238898038468985769) do
       xi = xi + 6.28318530717958647692;
   enddo;
   if (xi > 1.57079632679489661923) then
       xi = xi + 3.141592653589793238462643;
       sign = -1;
   endif;
   q = xi / 1.57079632679;
   q2 = q * q;
   y = ((((0.00015148419  * q2
         - 0.00467376557) * q2
         + 0.07968967928) * q2
         - 0.64596371106) * q2
         +1.57079631847) * q;

   return y*sign;

КонецФункции
193 truba
 
21.01.10
15:42
Интересно, а как быстро Дельфи обработает такую ситуевину:

а = "Это текст";
b = Спр_Контрагент.ТекущийЭлемент();

с = а + b;

Это я к тому, шо компилятор ли, интерпретатор языка нихрена не знает какого типа переменную мы ему передадим для этого самого "+" , поэтому
"+" (дельфи) <> "+" 1С даже по смысловой нагрузке. Ну а дальше меряйте синее с пушистым

все имхо
194 i-rek
 
21.01.10
15:47
Процентов на 20 можно поднять скорость, если записать функцию таким образом:

функция фиб(ч)
 если ч<=2 тогда
   Возврат 1;
 иначе
   Возврат фиб(ч-1)+фиб(ч-2);
 конецесли;
конецфункции
195 Advan
 
21.01.10
16:31
Сравнение грузовика с гоночной машиной...
196 nop
 
21.01.10
16:35
(193) Variant ?
197 H A D G E H O G s
 
21.01.10
16:43
(196) Сам то понял, что сказал?
198 supremum
 
21.01.10
16:57
фиб(1 000 000)~4,4*10^1618033
Вычислено на калькуляторе примерно за 1 минуту
199 supremum
 
21.01.10
16:58
+(198) А теперь давайте сравним кто быстрее считает ;)
200 ДенисЧ
 
21.01.10
17:01
200
201 truba
 
21.01.10
17:06
Функция АиБ(а,б)
   возврат а + б;
КонецФункции

Если тип а: - строка
        б: - Ссылка на документ

Тогда: нужно по ссылке на документ получить его представление, что, сдается мне, как минимум обращение к структуре БД, к данным из БД и в конце концов объединение двух строк.
Как быстро обработает дельфи такую ситуацию?
Как быстро обработает дельфи ситуацию когда тип передаваемых параметров заранее неизвестен: число, справочник, перечисление, документ, строка, время, нужное подставить.
Вот за оператором "+" в 1с языке должны стоять как минимум все эти действия.

Но, имхо, место для оптимизации есть.
202 fisher
 
21.01.10
17:07
(187) Спс
203 H A D G E H O G s
 
21.01.10
17:28
(198) Мне разрядности в Дельфи не хватит :-)
204 sam_sam
 
21.01.10
21:14
(123) ВАУ! Хоть раз за сто лет адекватный человек зашел. Если для СНГ однозначно 1С. Предприятия от 5 до 100 человек. Кого? Грузчиков или людей работающих в базе, опять же не о чем. Документооборот какой? Сколько документов в день по сколько строк? При сведении баз 100 предприятий результат может состоять из одной строки.
Которую кстати и хотят видеть собственники. Детализация нужна какая? Думаю людям, которые смотрят консолидированные отчеты глубоко наплевать на то сколько получает дядя Вася в филиале кукоево, и то что там сперли 3 болтика М15 их интересует конечная информация: сколько заработал филиал, сколько потратил и по каким статьям, ну там зп, про..ли, пропили, потеряли. А для сведения 30 строк из 20 предприятий, можно вообще екселем обойтись.
205 sam_sam
 
21.01.10
21:15
(+204) любой толковый финик используя сводные таблицы забацает за 15 минут.
206 sam_sam
 
21.01.10
21:25
(0) В общем ты не то сравниваешь и не ту информацию ищешь. Запрос 1С8 сделает с такой же скоростью(+,-) как и чистый SQL и обрабатывать там ничего уже не нужно, даже выводить на встроенном языке ничего не нужно, уже есть встроенные объекты которые эту информацию засасывают и выплевывают в готовом для печати виде. Циклами в базу 1С только дятлы пишут, нормальные методы используют опять же встроенные методы типа "Загрузить(МассивДанныхТч), которые тоже уже скомпилированы и работают быстро. В общем язык этот так, для галочки. Используется в основном для управления формами, тому можно это тому можно то, а с какой скоростью обработается эта информация человеку глубоко пофиг, за 0.000001секунды или за 0.1с он все равно это не заметит.
207 modestry
 
21.01.10
21:36
(206) Некоторые конструкции языка запросов 1С, медленно выболняются в 1С, точнее некорректно компилируются...см известный глюк в УТ, связанный с партиями запрос
208 sam_sam
 
21.01.10
21:41
(207) Нверное. Регистр партии нужен и используется только в одном отчете ВаловаяПрибыль(и  подобных) предприятия при определении себестоимости по партиям. Если у тебя 100 доков по 100 строк в день это не критично. Если у тебя 100000доков по 10000 строк в день в ОДНОЙ базе, или выкинь партии и считай СС по средней или перепиши данный кусок. В любом случае проблема решаемая.
209 0xFFFFFF
 
21.01.10
21:45
(0) "Тут дело такое
хотим проект делать, а данных про 1с ее скорость нет
1с как способ реализации рассматривается
Народ, хотя бы для фибоначи сделаете, если не вломы. "

Если для вас скорость работы пузырькового метода - ключевой показатель, то за 1С лучше вам не браться. Все равно ничего не получится. Если бы даже она (скорость) была бы в тысячи раз меньше какого нить яваскрипт, я бы эту сортировку отдал на откуп СКЛ серверу... но сделал в 1С. Но если нравится мазохизм, то интерфейс можно попробовать написать хоть на си.
210 sam_sam
 
21.01.10
21:48
(209) не зря ты так, человек очень адекватный. Скорее всего ему в оба уха орут давай 1С, а он хитрюга хочет пропихнуть свою систему и ищет козыри, типа 1С тормозное и так далее. Если этот маневр по втюхиванию кому то удается то он в шоколаде до пенсии.
211 sam_sam
 
21.01.10
21:56
А вот если по "чеснаку" сравнения то нужно сравнивать методы работы с массивами типа ТаблицаЗначений Загрузить() Выгрузить(), Сортировать(), Найти() с собственными алгоритмами реализаций этих методов на Джаве или Васике, вот тогда и посмотрим кто быстрей.
212 modestry
 
21.01.10
21:59
(210) Яб сказал до гроба...Сидишь дома, раз в месяц приезжаешь...куешь бабло..главное не зарываться и сильно много денег не брать...
213 modestry
 
21.01.10
22:01
(211) Есть система на Первасиве...1С  с таким же функционалом будет жестоко тормозить....
214 sam_sam
 
21.01.10
22:06
(213) ну у одинэса рученки еще не дотянулись до банков, при желании заточат платформу и под это. Да нам тупым как то пофик на это, зачем 1С ник в банке? Сложные проценты считать? Там операции наверное(не знаю точно) все тупые пришло бабло, ушло бабло, прикарманили комиссию. Просто их миллионы. И нужна совсем другая платформа, не 1С.
215 sam_sam
 
21.01.10
22:08
(+214) еще этой платформе абсолютно нефик делать в билинге и др. системах где совершаются миллионы и миллиарды операций. Вот там (пока) да нужны другие платформы ну и вообще другой подход.
216 modestry
 
21.01.10
22:09
(214) При чем тут банки, обычный учет, списания, бухия, зп  и т.д....при взляде на нее франч сказал а нафиг вам 1С, когда все так классно работает...
217 sam_sam
 
21.01.10
22:13
(216) А я думал это опять, что то банковское. Тупой франч попался, конечно им нужно 1с!!!
зы
Разработчик СУБД Pervasive — американская компании Pervasive Software Inc. Так ты за пиндосов? Ну всё, враг ты мне классовый.
218 modestry
 
21.01.10
22:14
(217) Оболочка российской компании, движок первасив...MS SQL тоже не русское изобретение
219 sam_sam
 
21.01.10
22:21
(218) Ну как ты можешь такое говорить? Они же все кто? Правильно злыдни! А мы добрые и хорошие. Кроме программирования, еще  занимаемся консалтингом и аудитом всего и вся. От склада до МСФО, от опер учета до бюджетирования, от проведения инвентаризаций до прописывания документооборота предприятия.
220 sam_sam
 
21.01.10
22:23
(+219) Ты программиста сишника заставишь разговаривать с бухгалтером,монагером, финансовым, генеральным. На одном языке. Да черта с два они же поубивают друг друга с первых минут общения.
221 modestry
 
21.01.10
22:29
(220) Видел программиста на Кларионе, разговаоривает с бухами, финансовами, вздал на МФСО (евродиплом), консультат по Навижн и т.д....
222 sam_sam
 
21.01.10
22:33
(221) Красавец! Сдал? Молодец! Теперь пусть п-т в штаты, все равно мы его тут ценой задавим.
223 modestry
 
21.01.10
22:33
(222) Да что-то его не задали...1С Бит слился...
224 sam_sam
 
21.01.10
22:36
(223) ну единичные случаи для общей статистики ни какой роли не играют. Такой случай один на сотни.
225 modestry
 
21.01.10
22:38
(224) А завод автокомпоненты в НН, который с УПП ущел ?
226 sam_sam
 
21.01.10
22:40
(+224) Значит плохо клиента разводили. Надо было сказать, что уже все готовое есть заплатить нужно только один раз за внедрение.
(225) УПП на крупных предприятиях "как есть" внедряют только самоубийцы. Есть там моменты которые не плохо было бы переделать. Расчет себестоимости с хромым на обе ноги разузлованием в топку. Кстати это не единственный способ калькуляции затрат. Ничего докрутят.
227 sam_sam
 
21.01.10
22:42
(+226) Кроме того детали внедрения не известны. Может дибил какой нибудь внедрял.
228 pectopatop
 
22.01.10
02:41
(8) >>тормозит обращение к базе данных
я б сказал - выборка данных в БД, запрос то бишь, само-то обращение быстрое.
ИМХО
229 sidalexsandr
 
22.01.10
03:39
Ничего себе разница 7.7 быстрее считает раз в 10 чем 8.2. Странно как 1с могла на такое не обратить внимания
230 AlStorm
 
22.01.10
03:51
(229)
Читай (127)
231 Bolduin
 
22.01.10
13:43
(212) Вобщем то не совсем свою платформу на надо. Но на том на чем нам охота - вот и возник вопрос. А то у наших 1Сников шибко голоса звонкие
232 Bober
 
22.01.10
14:21
(0) Вот еще пять копеек:

Для сч = 1 По 500000 Цикл
  ЗначениеЧислоФорма = ЗначениеЧислоФорма + 1;
КонецЦикла;

через переменную формы   29 с.
через переменную объекта 9 с.
через переменную модуля  2 с.

тип у переменных форм и объекта Число (11, 1)
233 marat61
 
28.01.10
10:13
(134)
А вот кстати, с какой точностью вопрос.
Если использовать плавающую арифметику double или extended я в любом языке с жесткой типизацией данных смогу еще большие цифры складывать.

> В 1С можно выполнить следующую операцию

a=100000000000000000000000000000000000000000000000000000000000000024
b=200000000000000000000000000000000000000000000000000000000000000035
c=a+b

будет ли в результате
c=300000000000000000000000000000000000000000000000000000000000000059
?
234 orefkov
 
28.01.10
12:23
(233)
В 1С все как всегда имеет свои особенности.
Для начала, в коде нельзя указать число длиной более 63 разрядов. На печать также большие числа выводятся неохотно. Вот например, такой код:

Процедура Сформировать()
   a = 100000000000000000000000000000000000000000000000000000000000000;
   b = 200000000000000000000000000000000000000000000000000000000000000;
   a = a * 1000 + 24;
   b = b * 1000 + 35;
   c = a + b;
   Сообщить(Формат(c, "Ч100.0"));
   Сообщить(c % 1000);
КонецПроцедуры

Для первого Сообщить выведет длинную строку девяток.
Однако для второго Сообщить честно выведет "59".
Что скорее всего говорит о том, что процеду преобразования длинного числа в строку сделано криво, а сами числа "унутре" считаются правильно.
"Видишь суслика? И я не вижу. А он есть".

Ну а про даблы даже слышать смешно. Максимум 15 гарантированных значащих цифр в мантиссе плюс невозможность точного представления большинства дробных десятичных чисел делают их абсолютно негодными для финансовых вычислений.
235 fisher
 
28.01.10
12:25
Не повершишь.
а = 10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000059;
б = 20000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000041;
Сообщить(а+б);
30 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 000 100

Очень похоже, что класс, реализующий число в 1С (и операции с числами) в самом деле универсален и не имеет явного ограничения на длину числа.
236 H A D G E H O G s
 
28.01.10
12:44
(235) Имеет.
Не более 2 Гбайт на число.
237 fisher
 
28.01.10
12:51
(234) "Для начала, в коде нельзя указать число длиной более 63 разрядов".
А как же (235)? Может, это для 7.7?
Я, правда, не в модуле писал, а через алгоритмы инструментов разработчика.
Т.е. по сути код как текст через Выполнить().
238 H A D G E H O G s
 
28.01.10
12:53
(237) Под 7.7 вроде.

Под 8-кой и выводиться все верно.

З.Ы. ГнобилищеЗначений проверял? Когда читаются данные.
239 NS
 
28.01.10
12:55
(234) В 1С НЕОГРАНИЧЕНО ( пределах разумного) знаков после точки.
единственно плохо - операция деления отсекает знаки делителя после точки, и сообщить() имеет ограничение. Но это легко обходится. Я приводил программу вычисления корня из двух с огромным числом после точки методом хнов=(2/хстар+хстар)/2.
240 orefkov
 
28.01.10
12:56
++ (234)
Вот например, используя примитивный код для преобразования чисел в строку и обратно (только для целых чисел)

Функция ЧислоИзСтроки(стр)
   ч = 0;
   Для Н = 1 По СтрДлина(стр) Цикл
       ч = ч * 10 + КодСимв(Сред(стр, Н, 1)) - КодСимв("0");
   КонецЦикла;
   Возврат ч;
КонецФункции    // ЧислоИзСтроки

Функция ЧислоВСтроку(Знач ч)
   Если ч = 0 Тогда
       Возврат "0";
   КонецЕсли;
   стр = "";
   Пока ч <> 0 Цикл
       стр = Симв(КодСимв("0") + (ч % 10)) + стр;
       ч = Цел(ч / 10);
   КонецЦикла;
   Возврат стр;
КонецФункции    // ЧислоВСтроку
//*******************************************
Процедура Сформировать()
   a = ЧислоИзСтроки("100000000000000000000000000000000000000000000000000000000000000000000000024");
   b = ЧислоИзСтроки("200000000000000000000000000000000000000000000000000000000000000000000000035");
   c = a + b;
   Сообщить(ЧислоВСтроку(c));
КонецПроцедуры

Получим
300000000000000000000000000000000000000000000000000000000000000000000000059
241 orefkov
 
28.01.10
12:58
Да, забыл добавить, извраты нужны в 7.7
В 8ке наверное и так все в шоколаде.
242 NS
 
28.01.10
12:59
243 fisher
 
28.01.10
13:00
(238) "З.Ы. ГнобилищеЗначений проверял? Когда читаются данные"
Не-а. Не до этого. Пока не доказано обратное, предпочитаю верить на слово официальным источникам.
244 orefkov
 
28.01.10
13:02
(235)
Опять же говоря за 7ку - доподлино известен формат данных движка для чисел - строение класса CNumeric. Число хранится в динамическом массиве DWORD'ов, где каждый DWORD представляет 9 десятичных знаков числа. Плюс положение точки.
245 H A D G E H O G s
 
28.01.10
13:25
(243) Проверил.
Да, ГнобилищеЗначений читается из базы даже без выполнения метода Получить().

Плохо :-(
246 fisher
 
28.01.10
14:05
(245) Не критично. Вынести в РС - не проблема. Во всех типовых так и сделано.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан