|
|
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
andron81, отваливается всё равно по ошибке IOConsole Updater "An internal error has occurred. Java heap space" даже прикрутив логатер . Вопрос: можно ли чтобы он сохранял лог в файл , а не на выводил на экран ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2016, 15:51 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
andron81, чувак я-же тебе писал. Подключи нормальные библиотеки логгирования. Настрой appenders. Настрой их на запись в текстовые файлы. Вот тебе ссылки. https://logging.apache.org/log4j/2.x/manual/appenders.html http://logback.qos.ch/manual/appenders.html А текстовое окошко внизу которое тебе ЛЮБЕЗНО предоставляет среда разработки перепоелняет heap и правильно делает ибо нефиг слать терабайты текста в ИНФОРМАЦИОННОЕ (!) на минуточку окошко. Да вообще ничего писать не надо! Напиши только резалт когда функция закончит работу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2016, 16:10 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
mayton Да вообще ничего писать не надо! Напиши только резалт когда функция закончит работу. закончит , но не скоро ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2016, 16:12 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
У меня на С++ в 2003 году на Celeron-300 эта задача решалась за минут пять. А щас учитывая рост перформанса можно просто умножать на десять. Тоесть за полминуты должна решаться. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2016, 16:49 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
maytonУ меня на С++ в 2003 году на Celeron-300 эта задача решалась за минут пять. А щас учитывая рост перформанса можно просто умножать на десять. Тоесть за полминуты должна решаться. вы когда о процессах говорили вы многопоточность имели ввиду ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2016, 17:07 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
Я говорил о способности этой задачи исполнятся параллельно. А будь это процесссы (ProcessBuilder) или потоки (Thread) - это уже детали реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2016, 17:09 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
mayton, хорошо, тогда я не вижу иного способа как иметь n разных массивов и работать с ними параллельно. а ещё вести один глобальный массив куда складывались бы тупиковые маршруты . таким образом мы исключим повторений по тупиковым путям в разных потоках ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2016, 17:12 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
Зачем вам нужен глобальный массив? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2016, 17:41 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
maytonЗачем вам нужен глобальный массив? глобальный , ну я честно говоря уже запамятовал как потоками пользоваться, я сказал так в предположении , что каждый поток это отдельный класс. мне видимо надо эту тему освежить. не пинайте сильно :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2016, 17:54 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
maytonУ меня на С++ в 2003 году на Celeron-300 эта задача решалась за минут пять. для стартовой точки 1:1 выдает менее чем за минуту кучу решений . а вот для других уходит в думы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2016, 17:55 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
andron81maytonЗачем вам нужен глобальный массив? глобальный , ну я честно говоря уже запамятовал как потоками пользоваться, я сказал так в предположении , что каждый поток это отдельный класс. мне видимо надо эту тему освежить. не пинайте сильно :) Давай порассуждаем. У тебя - идеальная задача. Она идеально параллелится. Можно в 4 Thread запустить разные экземпляры расчетов только задав им разные условия чтобы пути коней не пересекались. Это нужно для повышения КПД а вовсе не для решения коллизий. Задейстовать либо Random с разными seed либо hash-функции. Или если рассматривать проблему коня как поиск маршрутов в дереве то нам достаточно описать простой алгоритм расщепления дерева на 4 поддерева. Включать в эту модель какой-то глобальный массив нет смысла. Во первых это замедлит прозводительность. 4 потока будут конкурентно писать туда. Во вторых единой точкой соприкосновения этих потоков реально будет только публикация отчота. Или финал работы. Число 4 я взял просто для примера. Пока - необоснованно. Но можно брать и другие числа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2016, 18:13 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
ivanrauid unique, вот допустим, на 64 ходу найдено решение. Вопрос: выйдет ли код из цикла? Код: java 1. там достаточно Код: java 1. было потому что когда мс 9, то success = false. пардон, в алгоритм не вникал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2016, 18:18 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
maytonandron81, чувак я-же тебе писал. Подключи нормальные библиотеки логгирования. Настрой appenders. Настрой их на запись в текстовые файлы. Вот тебе ссылки. https://logging.apache.org/log4j/2.x/manual/appenders.html http://logback.qos.ch/manual/appenders.html А текстовое окошко внизу которое тебе ЛЮБЕЗНО предоставляет среда разработки перепоелняет heap и правильно делает ибо нефиг слать терабайты текста в ИНФОРМАЦИОННОЕ (!) на минуточку окошко. Да вообще ничего писать не надо! Напиши только резалт когда функция закончит работу. Положите вот такой файлиk logback.xml в папку с библиотеками или в корень класс файлов Код: xml 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. main метод запускайте установив переменную Java Xmx (максимальный размер памяти) java -Xmx1024m ru.sql.forum.samples.Horse (поправьте имя класса) Скачайте и добавьте в путь logback-classic-<VERSION>.jar и slf4j-api-<VERSION подходящая к версии logback>.jar Библиотеки и инструкции/примеры здесь: http://logback.qos.ch/download.html По уменьшению расхода памяти можно предложить если вам достаточно бинарного массива (аналог boolean), вначале создаете массив бит из нулей и ставите единички когда нужно. 1. замена массива int[64] на 2 int или 1 long (64 bit). Доступ к битам с помощью маски, это быстрая операция. 2. для больших массивов можно использовать bitset https://docs.oracle.com/javase/7/docs/api/java/util/BitSet.html вам он скорее всего не нужен так как в этом классе накладные расходы не окупятся для 64 бит (2 int | 1 long). пример работы с маской Код: java 1. 2. 3. 4. 5. 6. Аналогично работа с нулями (логический &) и считыванием (маска и сдвиг вправо на нужное кол-во позиций) Как выше заметили, задача хорошо распараллеливается но вам пожалуй пока рано за это браться. Если будет желание посмотрите java thread api, task executor. https://docs.oracle.com/javase/7/docs/api/java/util/concurrent/Executor.html http://winterbe.com/posts/2015/04/07/java8-concurrency-tutorial-thread-executor-examples/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2016, 18:45 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
maytonМожно в 4 Thread запустить разные экземпляры расчетов только задав им разные условия чтобы пути коней не пересекались. Это нужно для повышения КПД а вовсе не для решения коллизий. Задейстовать либо Random с разными seed либо hash-функции. то есть вы предлагаете просто рандомно , а не последовательно как у нас выбирать следующего кандидата в разных независимых потоках. не ведя никаких проверок на совпадения (а они будут, но не велика проблема) Верно ? может что-то хорошего и выйдет maytonИли если рассматривать проблему коня как поиск маршрутов в дереве то нам достаточно описать простой алгоритм расщепления дерева на 4 поддерева. это вообще трудно себе представить . как вы сделаете, чтобы в одном потоке робот не лез на клетки другого дерева ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2016, 22:52 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
andron81, кажется вы меня не слышите. Я уже говорил о том что данное ПО не требует шаринга шахматной доски. В этом суть моего месседжа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.12.2016, 22:54 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
maytonandron81, кажется вы меня не слышите. это непросто . вы про это ? maytonВключать в эту модель какой-то глобальный массив нет смысла. Во первых это замедлит прозводительность. 4 потока будут конкурентно писать туда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 08:27 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
uid uniquemain метод запускайте установив переменную Java Xmx (максимальный размер памяти) java -Xmx1024m ru.sql.forum.samples.Horse (поправьте имя класса)Не нужно этой задаче столько памяти. Похоже, там консоль эклипса валится от флуда Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 09:24 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
ivanrauid uniquemain метод запускайте установив переменную Java Xmx (максимальный размер памяти) java -Xmx1024m ru.sql.forum.samples.Horse (поправьте имя класса)Не нужно этой задаче столько памяти. Похоже, там консоль эклипса валится от флуда Код: plaintext 1. 2. я об этом уже давно твердил. но в слабость моей компетентности в JAVA к моему мнение никто не прислушивается ))) конечно , не надо. максимальная глубина 64. подумаешь ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 09:27 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
mayton, хотел у Вас спросить . Вот это имеет ли шанс на удачу или же чушь несусветная ? andron81то есть вы предлагаете просто рандомно , а не последовательно как у нас выбирать следующего кандидата в разных независимых потоках. не ведя никаких проверок на совпадения (а они будут, но не велика проблема) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 09:31 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
andron81Atum1 http://algolist.manual.ru/maths/combinat/knight.php хотя интересное правило Варнсдорфа описано. но я правило такого не знал. поэтому у меня тупой перебор всего дерева. поэтому видимо и долго Есть еще правило Эйлера (см вики по данной проблеме) делаете до упора рекурсию а на остальные ходы делает обход с конца с 64 клетки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 11:36 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
Atum1 делаете до упора рекурсию а на остальные ходы делает обход с конца с 64 клетки. не. не прикольно . вероятность, что с 64-ой клетки мы попадём не в стартовую клетку довольно большая. а задача стоит с известной клетки вести вот интересно послушать mayton . Верно ли я его понял, что он предлагал обход дерева осуществлять не последовательно от ветки к ветке , а брать случайную. и всё это в нескольких потоках вести юзая разные массивы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 11:47 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
ну вот 8 потоков зарядил. задумывал как в предыдущем своём сообщении Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. Код: java 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. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 16:47 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
andron81ну вот 8 потоков зарядил. задумывал как в предыдущем своём сообщении https://docs.oracle.com/javase/tutorial/essential/concurrency/executors.html ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 16:49 |
|
||
|
рекурсивная функция делает переполнение кучи.
|
|||
|---|---|---|---|
|
#18+
Blazkowicz, то есть я сделал туфту ? ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.12.2016, 16:53 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=39365290&tid=2123359]: |
0ms |
get settings: |
8ms |
get forum list: |
13ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
165ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
82ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 503ms |

| 0 / 0 |
