Заблокирован
|
|||||||||||
1 | |||||||||||
Как ускорить вычислительные процессы программы?21.04.2014, 18:19. Показов 1083. Ответов 7
Метки нет (Все метки)
Чтобы сделать быструю программу, в которой много вычислений,
Надо по возможности не делать эти вычисления в самой программе, а вставить в программу уже готовые значения. Вот яркий пример: Требуется вычислить sin1° + sin2° + ... + sin90° Чтобы определить затраченное время, в программе эти вычисления повторяются 100 000 раз. Для сравнения смотрите вторую программу, которая делает тоже самое, но все синусы вычислены заранее
Время выполнения второй программы = 55 сек Как видите вторая программа выполняется быстрее первой в 1,5 раза Желая узнать какого эффекта можно достигнуть если взять функцию чуть сложнее, не меняя самой программы, я использовал следующую функцию: SIN(i / 180 * 3.141592) + LOG(i) - LOG(i) (по сути та же задача, логарифмы в нагрузку) Время вычисления составило 169 сек - в ТРОЕ (!!) больше, чем у программы (55 сек), где все сосчитано. Пусть каждый сделает для себя вывод .... Успехов всем!
0
|
21.04.2014, 18:19 | |
Ответы с готовыми решениями:
7
Разветвляющиеся вычислительные процессы Разветвляющиеся вычислительные процессы. Оператор выбора. Циклические вычислительные процессы. Вычислить первые 20 членов Итерационные вычислительные процессы. Вычислить произведение членов ряда |
Заблокирован
|
||||||
22.04.2014, 09:07 | 2 | |||||
Сообщение было отмечено gehh как решение
Решение
Программа 3 (ещё соперник)
Добавлено через 12 часов 3 минуты и Это опечатка? Или так и задумано?
1
|
22.04.2014, 12:14 | 6 |
Сообщение было отмечено gehh как решение
Решение
На дряхлом QBasic-е, быструю прогу вы не напишете. Про табличные вычисления не знает
лишь тот, кто не оптимизировал свои программы и проще этого нет ничего. И это конечно же не панацея, данный метод не везде применим, он нещадно жрёт память для крупных таблиц. DATA конечно работает медленнее массивов, т.к. это комплексный оператор он хавает и числа и строки, да и реализация его в QBasic\QB корявая. В DATA лучше забивать данные в виде HEX строк и раскладывать в массив уже в программе.
1
|
Заблокирован
|
|
22.04.2014, 13:28 [ТС] | 7 |
Вы правы. Но я подразумевал в данной программе не только QBasic.
По сути это общий принцип: Вычисли то, на что в программе уходит Масса времени. А потом это можно либо в программу вставить, либо в текстовый файл. И далее, как тут хорошо подсказали, можно загрузить в массив. Конечно общий объём программы увеличивается. Но здесь никуда не денешься. Хочешь быстро - не жалей память. Быстродействие программы и ее объём - вещи несовместимые!! Спасибо вам за информацию! Как говорится, с миру по нитке - голому рубаха. Спасибо!
0
|
572 / 141 / 37
Регистрация: 12.03.2012
Сообщений: 403
|
|
22.04.2014, 13:32 | 8 |
Не надо забывать про настройки опций компилятора bc.exe, правда я лично, использую всего две опции:
/O - генерирует объектный код для автономных исполняемых программ (stand-alone EXE-files). /Ot - позволяет оптимизировать, а во многих случаях и ускорить, выполнение процедур SUB и функций FUNCTION. Это, в чем я сам убедился, дает максимальную скорость исполняемых программ.
1
|
22.04.2014, 13:32 | |
22.04.2014, 13:32 | |
Помогаю со студенческими работами здесь
8
Разветвляющиеся вычислительные процессы Линейные вычислительные процессы. Циклические вычислительные процессы Разветвляющиеся вычислительные процессы в С++ Циклические вычислительные процессы Циклические вычислительные процессы Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |