Имя: Пароль:
1C
 
Скорость работы 1С
,
0 LeshiyL
 
19.02.10
08:15
Написал простенькую процедурку, которая перебирая числа от 1 до 50000 выбирает простые (опять же по циклу). Переписал идентичный код на C# (за исключением мелких добавок к синтаксису). Скорость работы ехе-шника C# в 6 раз выше чем скорость работы 1С. ПОЧЕМУ???? Ведь здесь вообще никаких обращений к базе! Там чистая математика и пара сравнений и все.... Чего-то я не понимаю в этой жизни...
1 AlStorm
 
19.02.10
08:16
(0)
Это что, ты с С++ сравни:))
2 DrZombi
 
гуру
19.02.10
08:20
(0)Сила в уровне, т.е. чем выше уровень, тем тормознее программа :)
С++ - ниже уровнем :) и следовательно быстрее :)
3 LeshiyL
 
19.02.10
08:20
(1) Кто бы еще сказал почему... И что с этим делать? Выносить все расчеты в свою DLL?
4 Sadovnikov
 
19.02.10
08:21
(3) Для начала запусти замер производительности и удивись, что у тебя далеко не рассчеты тормозят.
5 DrZombi
 
гуру
19.02.10
08:22
(3)Лучше начни сравнивать не с С++, а с 7.7... Вот тогда ты поймешь, где лучше :)
6 AlStorm
 
19.02.10
08:24
(6)
А вот если рекурсию в 1с сделать, то разница будет не в 6, а в 10-20 больше:(
7 LeshiyL
 
19.02.10
08:25
(4) замер показывает что больше всего съедается именно делением (более 50%)
8 Кирпич
 
19.02.10
08:27
(0)Автор, ты с какой планеты?
Да вроде никто и не ждал от 1с большой скорости. в 6 раз очень даже неплохой результат
9 vde69
 
19.02.10
08:27
(7) покажи код

различие скорости иметт 2 причины
1. 1с - транслятор
2. 1с - использует переменные типа variant
10 Sammo
 
19.02.10
08:28
Какой тип числа в шарпе и какой в 1С...
11 AlStorm
 
19.02.10
08:29
(10)
Кстати, какое максимальное число поддерживает 1с?
12 IamAlexy
 
19.02.10
08:29
(0)
вали.
пиши учетные системы на С#

меньше народу - больше кислороду..
13 dk
 
19.02.10
08:30
если критично - вынеси математику в WSH
и пройдись по поиску уже не раз обсуждали
14 Sadovnikov
 
19.02.10
08:31
(7) Показывай код.
15 LeshiyL
 
19.02.10
08:32
ВремяСтарта=ТекущаяДата();
   ПроверкаРазрядности=0;
   Для ТекущееЧисло=4 по 50000 Цикл
       ФлагПростогоЧисла=Истина;
       Для N=2 по ТекущееЧисло-1 Цикл
           РезультатОтДеления=ТекущееЧисло/N;
           Если РезультатОтДеления=Цел(РезультатОтДеления) Тогда
               //значит это уже не простое число
               ФлагПростогоЧисла=Ложь;
               Прервать;
           КонецЕсли;    
       КонецЦикла;
       Если ФлагПростогоЧисла Тогда
           //значит перебрал все числа и не нашел
           //проверяем разрядность
           Если Цел(ТекущееЧисло/1000)<>ПроверкаРазрядности Тогда
               ПроверкаРазрядности=Цел(ТекущееЧисло/1000);
               DT=ТекущаяДата();
               СтрокаВывода=""+DT+"    "+ТекущееЧисло;
               Сообщить(СтрокаВывода);
           КонецЕсли;
       КонецЕсли;        
   КонецЦикла;
   ВремяФиниша=ТекущаяДата();
   Итог="Стартовали в "+ВремяСтарта+" Финишировали в "+ВремяФиниша;
   Сообщить(Итог);
16 Дикообразко
 
19.02.10
08:32
сколько можно это обсуждать?
или без этого год не удастся?
17 Sadovnikov
 
19.02.10
08:34
(15) Оооочччееень жизненно необходимый код, ага...
18 IamAlexy
 
19.02.10
08:35
представляете, подъемный кран ездит по скоростной трассе медленнее чем... чем да медленнее чем рено логан...


или я чегото в этой жизни не понимаю?
19 IamAlexy
 
19.02.10
08:36
(0) ты замерь время требуемое для организации системы учета на C# и 1C..

из трех документов, плана счетов с 5 счетами и тремя отчетами - оборотносальдовая, карточка счета и анализ субконто.


:)
20 supremum
 
19.02.10
08:39
(0) А на ассемблере можно написать код, который будет раз в 100 быстрее чем на C# ("ПОЧЕМУ????") :))
21 AlStorm
 
19.02.10
08:42
Чето код какой-то неоптимальный...
22 AlStorm
 
19.02.10
08:42
(20)
Ну в 100 раз ты это хватил.
23 supremum
 
19.02.10
08:48
(22) Это художественное преувеличение, призвано показать всю силу драматического эффекта :)
24 AlStorm
 
19.02.10
08:49
(23)
Мне надо табличку "сарказм" =)
25 LeshiyL
 
19.02.10
08:52
(15) для замера производительности код - то что надо особенно если в рельной задаче все упирается исключительно в вычисления
26 supremum
 
19.02.10
08:55
(25) Вообще то 1С это не мат. пакет, а исключительно учетная система. Зачем решать на ней не свойственные задачи?
27 Artful Den
 
19.02.10
09:05
Ветки пятница не нашел. Что-ж, и здесь неплохо ))

ЗЫ: Ушел за попкорном.
28 Sadovnikov
 
19.02.10
09:09
(25) "в рельной задаче все упирается исключительно в вычисления" - покажи-ка эту реальную задачу? И код, ее обрабатывающий.
29 orefkov
 
19.02.10
09:09
(15)
Ну как нагрузочный тест такой код конечно пойдет, но так-то криво.
В C# небось для проверки делимости "%" юзал?
30 vde69
 
19.02.10
09:15
(28) я делал "Триангуляцию 3D облаков" там скорость вычислений критична :)
31 hhhh
 
19.02.10
09:17
(25) Функцию Сообщить() убери. Она очень тормозная.
32 Sadovnikov
 
19.02.10
09:17
(30) А при этом выводил зависимоть от скорости размножения мух-дроздофил в условиях крайнего севера?
33 supremum
 
19.02.10
09:18
Немного офф.
В далекие времена у меня на пне 233 поkучалась соптимизировать код до 233 Mflops
34 supremum
 
19.02.10
09:18
поkучалась =получалось
35 vde69
 
19.02.10
09:21
(32) ну я в 1с это делал по тому как исходный массив очень большой (десятки миллионов точек) и при работе требовалось сохранять промежуточные варианты для возможности отката назад части и выбора другой стратегии. Для этого нужна была база данных, а на Дельфях я не захотел заморачиватся с такой задачей
36 AlStorm
 
19.02.10
09:24
(0)
Давай на C# код!
37 Fynjy
 
19.02.10
09:25
Перепиши корректно в asm совсем офигеешь ...
Закон Брукера: Даже маленькая практика стоит большой теории.