Показать сообщение отдельно
Старый 11.02.2017, 17:59   #65  
mazzy is offline
mazzy
Administrator
Аватар для mazzy
Most Valuable Professional
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
28,840 / 3738 (182) ++++++++++
Регистрация: 29.11.2001
Адрес: Москва
Цитата:
Сообщение от Ace of Database Посмотреть сообщение
Написал джоб, который генерирует первые 10 тысяч чисел фибоначчи.
Цепануло, видать ))))

Цитата:
Сообщение от Ace of Database Посмотреть сообщение
Если переписать этот джоб на языке C++ и пользоваться указателями и массивами, то быстродействие увеличится в тысячи раз. И можно будет вычислять миллионные члены ряда Фибоначчи.
рано.
еще не все из x++ выжато.

Предложения по улучшению:
1. вполне достижим результат "меньше 1 минуты". (для измерения скорости можно отказаться от SysOperationProgress)
2. "j = (strLen(_a) > strLen(_b) ? strLen(_a) : strLen(_b))" - фи, моветон. и strlen вычисляется дважды для каждой строки. лучше j = max(strlen(_a), strlen(_b))
3. операции со строками очень медленные. и сильно нагружают сборщик мусора. лучше использовать массив
4. сложение огромных чисел - это отдельная задача для собеседований ))))) там главная хитрость - оперировать не отдельными цифрами, а группами цифр. в одном int32 легко можно хранить до 9 полноценных разрядов (числа до +2147483647). Что в совокупности с массивом вместо строки, может дать увеличение производительности раз в 10. а ведь есть еще int64 и bigint )))
5. деление - очень дорогостоящая операция ))) когда исчерпаете варианты оптимизации, попробуйте заменить деление сравнением и сложением/вычитанием. Дополнительный цикл не понадобится )))
6. особенность x++ - вызов вложенной функции в X++ выполняется непропорционально долго по сравнению с вызовом обычного метода. попробуйте переделать, сами удивитесь.
7. особенность x++ - Конейнер - это сериализация-десериализация. Контейнер очень дорогостоящая операция для банального swap. Попробуйте избавиться от контейнера.

)))))

и еще: будете играться с типами int32, int64 попробуйте разные режимы - на клиенте/на сервере. со включенным CIL и с выключенным. это тоже особенность X++

Последний раз редактировалось mazzy; 11.02.2017 в 18:36.