![]() |
#10 |
Участник
|
Цитата:
Цитата:
еще не все из 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. |
|
|
За это сообщение автора поблагодарили: alex55 (1). |