|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
mayton Давайте вы конкретизируете ваши вопросы в привязке к моим пунктамУважаемый mayton, нет у меня вопросов, было интересно в оригинале осилить статью заслуженного чела на указанную тему. ... |
|||
:
Нравится:
Не нравится:
|
|||
26.01.2019, 21:40 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
Nice job. ... |
|||
:
Нравится:
Не нравится:
|
|||
27.01.2019, 01:06 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
mirudomбыло интересно в оригинале осилить статью заслуженного чела на указанную тему. Интересно было прочитать, много поучительного, но, эээ такое чувство, что дискуссия ведется об использовании различных столовых приборов, ну, достоинство вилок или ножей в различной ситуации, супчик - так лучше ложечкой, и тд, а вот вывод, вывод делается очень интересный, надо есть руками. ... |
|||
:
Нравится:
Не нравится:
|
|||
09.02.2019, 22:13 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
maytonmaytonпропущено... Был топик географии 17384728 , где мне понадобилось реализовать Кривую Гилберта. Она реализована как утилита но мне нужен был некий строительный шаблон набодобие Iterator<Point> который по запросу next() выдает следующую координату кривой. Классический алгоритм кривой - рекурсивен. Рекурсия внутри итератора - тот еще головняк. Разваливать его в FSM со стеком мне не хотелось. Нудно да и ошибок можно наделать кучу. А реализация - вот она. Почти работает. После этого у меня появился еще один мотиватор чтобы реализовать красивый строительный элемент. Друзья. Топик - сложный и многогранный. Я форкну отдельное обсуждение по корутинам (сопрограммам). Я возьму штук 3-5 ЯП и промоделирую итератор Гильберта. Особо меня интересует перформанс и как оно реализовано с практической точки зрения. Прошу прощения что я беру такую специфичную задачу но у меня в наличии пока ничего другого нет. Если у вас есть предложения - рад послушать. Прошу прощения за внезапный UP. Итератор Гилберта на двух потоках. Кривая и громозкая реализация. Ее надо упростить. Опять-же разворачивание рекурсии в стек - не особо интересно. Код: 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. 134. 135.
Меня интересуют языки с yield, ленивым конструированием списков. Тоесть нужно не алгоритмическое а имено технологическое решение. Предполагаю что будет масса рекурсивных алгоритмов которые обходят деревья графы и прочие достаточно сложные для разворачивания структуры. Под катом - каменты к алгоритму На 90% это копия того кода на сях который мы делали в пятничной географии. Только там интеракция этого сорца с другими модулями шла через STDOUT, тоесть проблемы передачи потока координат не было. Тоесть эти функции a(), b(), c()... каноничны и собственно рисуют и вращают кривую на разных уровнях раррешающей способности поверхности. Их изучать и анализировать не надо. А что надо? Нужно выкинуть нахер блокирующую очередь и вспомогательный поток. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 00:02 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
maytonМеня интересуют языки с yield, ленивым конструированием списков. Конечный автомат же. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 01:09 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
Давай сюда свой конечный автомат. Или не-конечный? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 01:21 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
mayton, Я к тому, что yield разворачивается в конечный автомат (потому что ленивый), который довольно громоздкий. Хотя выглядеть это может и красиво ) Чёт я не увидел тут два потока... ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 02:28 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
значит я хорошо их спрятал. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 08:09 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
На Kotlin можно попробовать переписать. Тогда явный Thread и очередь можно будет выкинуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 12:36 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
mayton значит я хорошо их спрятал. я про потоки с вычислением, он у вас один. и зачем эти пляски с блокирующей коллекцией? может громоздкость связана с неясно оформленой/понятой задачей? ) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 13:23 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
hVosttmayton значит я хорошо их спрятал. я про потоки с вычислением, он у вас один. и зачем эти пляски с блокирующей коллекцией? может громоздкость связана с неясно оформленой/понятой задачей? ) Да нет никакой задачи. Это всё - мысли по теме будущей мультипоточности. Вы сами можете задачу поставить? Чтоб всем была понятна мотивация. Я одну задачу поставил. Итератор по сложной структуре данных. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 14:15 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
mayton, ну вот yield-оператор ленивый, он будет возвращать данные по мере обращения. т.е. вычисления "вперёд", как вы сделали с коллекцией не будет, а если вам это нужно, то в любом случае мы придём либо к safe-блокирующей коллекции, либо к стеку с соответствующими ограничениями. в C#, например, можно посмотреть в сторону DataFlow или Channels ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 16:31 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
maytonНа Kotlin можно попробовать переписать. Тогда явный Thread и очередь можно будет выкинуть. не вижу корреляции. если у вас вычисление работает в независимом потоке и не связано с чтением, то в любом случае будут: поток, коллекция, синхронизация потоков. возможны более оптимальные конструкции типа Producer/Consumer, но от этого в любом случае никуда не деться. какого волшебства там от котлина ожидается я не понял :) ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 16:33 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
насколько я понял, там паттерн = много-много мелких задачек а такие паттерны лучше всего паралеллить через GPU maytonЭто всё - мысли по теме будущей мультипоточности будущее многопоточности в полном, 100-процентном разделении потоков чтобы один поток никак не пересекался с другим (ни в кэше, ни в памяти, ни где-то ещё) А чтобы задача не проставивала, потоков должно быть больше, чем нужно ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 18:05 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
полудухбудущее многопоточности в полном, 100-процентном разделении потоков чтобы один поток никак не пересекался с другим (ни в кэше, ни в памяти, ни где-то ещё) Это невозможно. Ну или по крайней мере подобная задача была-бы бесполезна и ненужна для бизнеса. Задачи постоянно пересекаются по данным. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 20:51 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
там тоже самое всё, просто потоки не бегают туда-сюда по разным задачам взял задачу - решаешь её а ещё лучше, если каждый поток умеет делать только 1 тип задач один из БД читает, другой в БД пишет, третий регекспит, четвёртый считает итд как в клетке ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 21:10 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
полудух, ты моделируешь некий рай или Эдем для мультипоточности. И ему есть название. Shared nothing. Это когда например ты задачи можешь разнести по разным хостам и запустить их и тупо ждать результата. Интеракции между ними нет и не предвидится. Так например работает блокчейн цепочка. У них интеракция - только цифровое подписывание текущего блока валютных транзакций. Это и позволяет гонять крипту на физически разных компах и ядрах и видеокартах и аппаратных устройствах типа ASIC. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 21:16 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
hVosttmaytonНа Kotlin можно попробовать переписать. Тогда явный Thread и очередь можно будет выкинуть. не вижу корреляции. если у вас вычисление работает в независимом потоке и не связано с чтением, то в любом случае будут: поток, коллекция, синхронизация потоков. возможны более оптимальные конструкции типа Producer/Consumer, но от этого в любом случае никуда не деться. какого волшебства там от котлина ожидается я не понял :) Ленивый итератор на Scala я планирую переписать по аналогии с тем как я например генерил кандидатов для простых чисел. Решение очень изящное. И никаких тебе блокинг очередей. Код: javascript 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12.
Но с Гилбертом так пока не вышло. Я что-то упускаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 21:29 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
maytonНо с Гилбертом так пока не вышло. Я что-то упускаю. Вроде постил уже Четверговый корутин с Гилбертом ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 21:57 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
fixxermaytonНо с Гилбертом так пока не вышло. Я что-то упускаю. Вроде постил уже Четверговый корутин с Гилбертом О. Шикарно. Почему я забыл. ХЗ. Я только с вашего позволения заменю tuples, на case-class, так удобнее. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 22:04 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
А в чем разница между этими двумя операторами? Код: java 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 22:15 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
maytonА в чем разница между этими двумя операторами? Код: java 1. 2. 3. 4.
Первый цепляет элемент, второй два стрима между собой. Код: plaintext 1. 2. 3. 4. 5.
... |
|||
:
Нравится:
Не нравится:
|
|||
13.10.2019, 22:33 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
maytonполудух, ты моделируешь некий рай или Эдем для мультипоточности. И ему есть название. Shared nothing. Это когда например ты задачи можешь разнести по разным хостам и запустить их и тупо ждать результата. Интеракции между ними нет и не предвидится. Так например работает блокчейн цепочка. У них интеракция - только цифровое подписывание текущего блока валютных транзакций. Это и позволяет гонять крипту на физически разных компах и ядрах и видеокартах и аппаратных устройствах типа ASIC. да не, я вроде не это описал разные хосты всё также будут мутить свою внутреннюю многопоточность я скорее описывал другую архитектуру процессора ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 00:20 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
Придумай задачу под твой процессор. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 00:49 |
|
Тяпничная будущая мультипоточность
|
|||
---|---|---|---|
#18+
fixxermaytonА в чем разница между этими двумя операторами? Код: java 1. 2. 3. 4.
Первый цепляет элемент, второй два стрима между собой. Код: plaintext 1. 2. 3. 4. 5.
Вот как-то так получилось. Итератор работает и тест прошел. Только не нравятся мне вот эти две переменных. Они как-то не по феньшую в этой скале стоят. Код: javascript 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.
(вот этот целочисленный верхний логарифм не надо разбирать. Он утилитарный и я его выкину из итератора в другой библиотечный код. Я привел его просто для наглядности). Странно. Но почему я обошёлся без :: Nil хвостика? По идее его-бы надо добавить. ... |
|||
:
Нравится:
Не нравится:
|
|||
14.10.2019, 01:03 |
|
|
start [/forum/topic.php?fid=16&msg=39875710&tid=1339751]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
56ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
1ms |
others: | 13ms |
total: | 176ms |
0 / 0 |