|
|
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
class Tmp { public static void main(String[] args) { int j=0,i=0; for(i=1000; i<999999;i++) { for( j=2;j<i;j++) { if(i%j==0) {break ;} } if(i==j) System.out.print(i+","); } System.out.println("Hello World!"); } Вот и весь код.... ПРоверил для чисел от 1 до 1000 все пучком Запустил от 1000 до ... считает 2 часа.... и не вижу конца АМД7-550 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.08.2006, 23:41 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. мдее.., мой Athlon 3000 пыхтел (total time: 17 minutes 3 seconds).count досчитал до 37566327799. За что же вы так компьютеры не любите )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 01:03 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
Поставь два System.out.println, будет еще дольше. Вывод в консоль занимает много времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 09:53 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
SatracПоставь два System.out.println, будет еще дольше. Вывод в консоль занимает много времени. ага, а если умножить время вывода в консоль System.out.println на количество итераций то и получим большое время выполнения. :) отсюда вывод - в цикле предназначенном для операций одного класса трудоемкости (например арифметическим операциям) нельзя совмещать операции дргугого класса трудоемкости (ввод/вывод например).. если нужно выводить на экран результат каждой итерации, воспользуйтесь строковым буффером либо потоком, вот так: 1 вариант оптимизации - Строковый Буффер: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 2. Вариант с потоком Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 10:42 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
сижу читаю книжку про .NET, самое начало, как раз рассказывается как выполняются методы на примере writeline и говорится о том что только при первом вызове "теряется производительность", и все последующие обращения выполняются "на полной скорости" : повторная верификация и компиляция не производится. - значит ли что там не будет проблем подобной здесь? впрочем, прога простая, сейчас проверю :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 12:26 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
йсижу читаю книжку про .NET, самое начало, как раз рассказывается как выполняются методы на примере writeline и говорится о том что только при первом вызове "теряется производительность", и все последующие обращения выполняются "на полной скорости" : повторная верификация и компиляция не производится. - значит ли что там не будет проблем подобной здесь? впрочем, прога простая, сейчас проверю :) Причем тут верификация и затраты на ввод-вывод? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 12:29 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
значит ли что там не будет проблем подобной здесь? Не путай кислое с длинным. Вызов метода - это вызов метода. Тормоза вызывает выполнение метода. Итерации без вывода пройдут гораздо быстрее, т.к. главный поток не будет тормозить for для вывода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 12:51 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
йсижу читаю книжку про .NET Дружок, а ты форумом не ошибся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 13:09 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
SatracНе путай кислое с длинным. Вызов метода - это вызов метода. Тормоза вызывает выполнение метода. Итерации без вывода пройдут гораздо быстрее, т.к. главный поток не будет тормозить for для вывода. я потому книжки и читаю, вопросы на форумах задаю - чтоб меньше путать ) только что выполнил с выводом и без, в обоих случаях выполнение заняло ровно 20 минут , интересно кто-что путает,а ? :) ыДружок, а ты форумом не ошибся? да нет, я вообще яву люблю ) чисто случайно книжка под руку попалась, строчка в ней и этот тред, всё так совпало - наверно звёзды..)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 13:22 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
(total time: 17 minutes 3 seconds) count = 37566327799 17*60+3=1023 37566327799/1023=36721728 итераций в сек. а может это нормаьно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 13:39 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
fjord(total time: 17 minutes 3 seconds) count = 37566327799 17*60+3=1023 37566327799/1023=36721728 итераций в сек. а может это нормаьно? оптимизировать нужно алгоритм который вы задали.. попробуйте развернуть цикл немного или заменить операцию i%j какой нибудь другой. а что касается операции вывода System.out... то в любом лучше ее выносить за пределы цикла где идет расчет ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 14:37 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
й что только при первом вызове "теряется производительность", и все последующие обращения выполняются "на полной скорости" : повторная верификация и компиляция не производится. - значит ли что там не будет проблем подобной здесь? впрочем, прога простая, сейчас проверю :) в яве тоже есть такое - называется JIT-компилятор. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 14:41 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
только что выполнил с выводом и без, в обоих случаях выполнение заняло ровно 20 минут , интересно кто-что путает,а ? :) Я недавно писал приладу, в которой логгировал на экран. Выводилось порядка 10000 записей. Работала она 20 секунд. Без вывода на экран работала 4. А почему так у тебя... Хз. В код не вдумывался, просто наступал на подобные грабли. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 14:57 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
Satrac Работала она 20 секунд. Без вывода на экран работала 4. А почему так у тебя... Хз. я ведь в вижуал студии тестил, не в яве.. вот в чём вопрос )) unicornmirage в яве тоже есть такое - называется JIT-компилятор. на свете столько всего интересного )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 15:19 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
shtrilВот и весь код.... ПРоверил для чисел от 1 до 1000 все пучком Запустил от 1000 до ... считает 2 часа.... и не вижу конца АМД7-550 Нельзя же так грубо считать простые числа... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 20:56 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
Да знаю я как искать простые числа.... Соль не в этом.... Задача решилась простым перенапралением вывода в массив, а затем массива на экран.... Все прошло быстро и качественно А я то думал, что цифирки будут по 1 выскакивать, а я играть в карты и смотреть появление их на экране, просто поразмышлять ... Ну нет у меня опыта писать на Джаве... Ну и напоролся на грабли-очевидно все цифирки ложились куда-то в буфер, запоминались, преобразовывались.... А время шло... Спасибо всем ответившим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2006, 23:32 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
А если еще не на J делить, а сделать массив простых чисел, а J - индекс по этому массиву... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2006, 17:38 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
ПсоПА если еще не на J делить, а сделать массив простых чисел, а J - индекс по этому массиву... а если развернуть внутренний цикл хотя бы на 16 подряд итераций, то ваще будет круто! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.08.2006, 17:49 |
|
||
|
почему так долго считает программа?
|
|||
|---|---|---|---|
|
#18+
Athlon Barton 2500+ ПсоПА если еще не на J делить, а сделать массив простых чисел, а J - индекс по этому массиву... а если развернуть внутренний цикл хотя бы на 16 подряд итераций, то ваще будет круто! А ты сначала разверни. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.08.2006, 10:20 |
|
||
|
|

start [/forum/topic.php?fid=59&tid=2148350]: |
0ms |
get settings: |
10ms |
get forum list: |
25ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
14ms |
get forum data: |
3ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 240ms |
| total: | 420ms |

| 0 / 0 |
