User login

You are here

Быстродействие вычислений

Есть число 1.0000001, и его 27 раз нужно:
- умножать само на себя
- возводить в степень 2.01
И всё это десять раз подряд, чтобы стала заметна разница во времени.

Тест предложен Сергеем Фроловым. На сайте коллег много результатов разных моделей калькуляторов.

Я решил протестировать SwissMicros DM42. Вот программа, которую, видимо, можно еще подсократить - я не являюсь опытным пользователем этой модели.

00 {92-byte prgm}
01 1.010
02 STO "P0"
03 LBL "C0"
04 1.0000001
05 STO "P1"
06 STO "P2"
07 1.027
08 STO "P3"
09 LBL "C1"
10 RCL "P1"
11 ENTER
12 x
13 STO "P1"
14 RCL "P2"
15 2.01
16 Y^X
17 STO "P2"
18 ISG "P3"
19 GTO "C1"
20 ISG "P0"
21 GTO "C0"
22 RCL "P1"
23 RCL "P2"
24 .END

Результаты (для отображения всех знаков F DISP ALL или FIX 8):
674 530,470741
4 669 419,98317
Время (среднее по ручному секундомеру, три запуска): 1,7 сек

Оптимизация 1. Прямое использование регистров вместо переменных.

00 {63-byte prgm}
01 1.010
02 STO 01
03 LBL "C0"
04 1.0000001
05 STO 02
06 STO 03
07 1.027
08 STO 04
09 LBL "C1"
10 RCL 02
11 ENTER
12 x
13 STO 02
14 RCL 03
15 2.01
16 Y^X
17 STO 03
18 ISG 04
19 GTO "C1"
20 ISG 01
21 GTO "C0"
22 RCL 02
23 RCL 03
24 .END

Время (среднее по ручному секундомеру, три запуска): 1,5 сек

Оптимизация 2. Использование числовых меток вместо символьных не дает выигрыша по времени.

Метки публикаций: