The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Выпуск языка программирования Ruby 2.7.0, opennews (??), 25-Дек-19, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


15. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Аноним (15), 26-Дек-19, 00:30 
>  выполнять дефрагментацию области памяти, решая проблемы снижения производительности

Кто в теме, объясните нубу, как дефрагментация памяти повысит производительность? Это же не диск, где головка туда-сюда дёргается, там просто адрес ячейки.

Ответить | Правка | Наверх | Cообщить модератору

18. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Аноним (18), 26-Дек-19, 00:51 
на правах ИМХО...

Если маленькие "свободные места" слить в один большой "кусок свободного места", это упростит создание новых объектов и руби будет реже говорить системе "дай еще памяти".

Но это в теории... что и кому добавится на практике посмотрим на продакшенах :)

Ответить | Правка | Наверх | Cообщить модератору

19. "Выпуск языка программирования Ruby 2.7.0"  +2 +/
Сообщение от Урри (?), 26-Дек-19, 00:52 
Гуглить Крис Касперски "Техника оптимизации программ. Эффективное использование памяти".

Если в двух словах - контроллер памяти пересылает данные целыми блоками. Больше фрагментация - больше пересылок. Если не в двух, то все очень сложно, ибо есть еще кэш и т.д. и т.п. - короче, читай книгу выше.

Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

33. "Выпуск языка программирования Ruby 2.7.0"  +1 +/
Сообщение от Аноним (33), 26-Дек-19, 07:39 
Лучше читать классику «Using Block Prefetch for Optimized Memory Performance», Advanced Micro Devices, Mike Wall  https://web.mit.edu/ehliu/Public/ProjectX/Meetings/AMD_block...

Не ясно что больше от книжек Криски, вреда или пользы.

Ответить | Правка | Наверх | Cообщить модератору

47. "Выпуск языка программирования Ruby 2.7.0"  +1 +/
Сообщение от Я (??), 26-Дек-19, 11:40 
У Криса оптимизация существенно лучше расписана.
Ответить | Правка | Наверх | Cообщить модератору

55. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Аноним (33), 26-Дек-19, 14:10 
Вопрос в том, насколько информация в его интерпретации верна.

«На процессоре Р-III 733/133/100 оптимизированный вариант выполняется быстрее на целых 66%, а на АМD Athlоп 1050/100/100 — на 60%, т. е. предвыборка увеличивает производительность более чем в два раза!»

Ответить | Правка | Наверх | Cообщить модератору

63. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Урри (?), 26-Дек-19, 15:56 
Неоптимизированный код - 100 секунд. Оптимизированный код - на 60% (60 секунд) быстрее; то есть 40 секунд.
40 секунд - более чем в два раза меньше, чем 100 секунд.

Кроме того, в книге приводятся графики тестов по доступу к памяти, множество фактов и примеров. Я, например, такие же тесты использовал, когда оптимизировал им одну либу для гугла под хромбук.

Ответить | Правка | Наверх | Cообщить модератору

71. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Аноним (33), 26-Дек-19, 17:49 
> Неоптимизированный код - 100 секунд. Оптимизированный код - на 60% (60 секунд)
> быстрее; то есть 40 секунд.
> 40 секунд - более чем в два раза меньше, чем 100 секунд.

Вот именно -- секунд. Секунда это единица измерения времени. Быстрее -- характеристика скорости, есть обратной ко времени величины. Корректно было бы: «время выполнения на 66% меньше».

Таким образом, после прочтения книжек Криски в голове образуется каша, которую не каждому дано переварить.

Ответить | Правка | Наверх | Cообщить модератору

78. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Урри (?), 26-Дек-19, 19:55 
Это в _вашей_ голове образуется каша. А в головах других людей - не образуется.

В данном случае вы слишком занудствуете. Это руководство по оптимизации, а не справочник. Написанное отличным живым языком, от которого не хочется уснуть через пять минут чтения.

Тем более, что справочников в принципе на эту тему быть не может.

Ответить | Правка | Наверх | Cообщить модератору

85. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Аноним (33), 27-Дек-19, 06:20 
> Это в _вашей_ голове образуется каша. А в головах других людей -
> не образуется.

Ниже https://www.opennet.ru/openforum/vsluhforumID3/119316.html#80
живой пример ;)

> В данном случае вы слишком занудствуете. Это руководство по оптимизации, а не
> справочник. Написанное отличным живым языком, от которого не хочется уснуть через
> пять минут чтения.

Криска хорош как популяризатор, но во всех темах плавает. Многократно разбиралось на reng, wasm (где формат опкодов за него переписал The Svin, из-за излишней "скромности" Криски не упомянутый в переиздании) и RSDN. Он сам по факту осознал свою некомпетентность, перейдя к любовным романам под женским псевдонимам.

> Тем более, что справочников в принципе на эту тему быть не может.

Откройте для себя «Intel® 64 and IA-32 Architectures Optimization Reference Manual» и аналог от AMD.


Ответить | Правка | Наверх | Cообщить модератору

80. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Аноним2 (?), 26-Дек-19, 21:17 
Вопрос-то Вы задавали не о секундах.
И человек Вам доступно объяснил, почему 60% - это более, чем в два раза.
«время выполнения на 66% меньше» - это и значит "быстрее на 66%" или "скорость/производительность больше на 66%".
А теперь подсчитайте буквы в кавычках, где проще и понятнее?
"...после прочтения книжек Криски ... не каждому дано переварить." - С этим согласен :)
"...Криски..." - Сказал Мэтр.

Ответить | Правка | К родителю #71 | Наверх | Cообщить модератору

86. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Аноним (33), 27-Дек-19, 06:27 
> Вопрос-то Вы задавали не о секундах.
> И человек Вам доступно объяснил, почему 60% - это более, чем в
> два раза.
> «время выполнения на 66% меньше» - это и значит "быстрее на 66%"

Откройте для себя учебник математики, тема пропорции. Следом порешайте задачки про пункт А и пункт Б. По данной, так и быть, скажу ответ, что бы не ждать весенних каникул. Если время сокращается на две трети, скорость утраивается. ;)

> или "скорость/производительность больше на 66%".
> А теперь подсчитайте буквы в кавычках, где проще и понятнее?
>  "...после прочтения книжек Криски ... не каждому дано переварить." - С
> этим согласен :)
>  "...Криски..." - Сказал Мэтр.

Вот здесь:

«Предвыборка сокращает время выполнения на процессоре Р-III 733/133/100 на  66%, а на АМD Athlоп 1050/100/100 — на 60%. Грубо говоря, производительность утраивается.»

Но Криске платили за странички, потому он налил какой попало водички.

Ответить | Правка | Наверх | Cообщить модератору

95. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Аноним2 (?), 28-Дек-19, 01:29 
Насчет "скорость/производительность больше на 66%" - опечатка, согласен.
Ответить | Правка | Наверх | Cообщить модератору

24. "Выпуск языка программирования Ruby 2.7.0"  +1 +/
Сообщение от Аноним84701 (ok), 26-Дек-19, 01:09 
>>  выполнять дефрагментацию области памяти, решая проблемы снижения производительности
> Кто в теме, объясните нубу, как дефрагментация памяти повысит производительность? Это же
> не диск, где головка туда-сюда дёргается, там просто адрес ячейки.

Это, скорее всего, вот отсюда:

https://www.ruby-forum.com/t/heap-fragmentation-in-a-long-ru...
> Thanks to Jamis B. [5] and Mauricio F. [6] I was able to determine that the application was stuck for several seconds in glibc’s realloc, which may be called (via ruby_xrealloc) from basically anywhere within ruby where a new or enlarged chunk of memory might be required.

[...]
> And then - all praise bugzilla - I found a bugreport [8] describing almost exactly my problems and leading me to ptmalloc3 [9].

[...]
> As far as I understand, ptmalloc3 does not eliminate heap fragmentation.
> However, due to the bit-wise tree employed in the newer version, it finds free chunks of the right size in shorter time by several orders of magnitude. Additionally, it seems that glibc 2.5 abandons its attempts to find a best-fit chunk after a while (possibly after 10000 tries),

т.е. проблема поиска свободных блоков памяти при сильной фрагментации - "приветик" от создания короткоживущих объектов "на каждый чих".

Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

28. "Выпуск языка программирования Ruby 2.7.0"  +1 +/
Сообщение от GentooBoy (ok), 26-Дек-19, 06:22 
нет не про это, комментатор выше все правильно сказал, дело в блоках и кэш линиях.
Конкретно про руби эрон выступрал даже на конфе и есть статья, лиже линки если хотите разобраться как
https://bugs.ruby-lang.org/issues/15626
https://www.youtube.com/watch?v=H8iWLoarTZc

Ответить | Правка | Наверх | Cообщить модератору

32. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Аноним (33), 26-Дек-19, 07:33 
> нет не про это, комментатор выше все правильно сказал, дело в блоках
> и кэш линиях.
> Конкретно про руби эрон выступрал даже на конфе и есть статья, лиже
> линки если хотите разобраться как
> https://bugs.ruby-lang.org/issues/15626
> https://www.youtube.com/watch?v=H8iWLoarTZc

Имеет смысл располагать в линейке кеша объекты, доступ к которым происходит примерно в одно время (как правило, такие объекты и создаются условно одновременно). Вот что по ссылке:

This compactor uses a "two finger" algorithm which was introduced in "The
Programming Language LISP: Its Operation and Applications" (page 228)1. Two
pointers point at each side of the heap, if one slot is empty, and the other is
moveable, it swaps places and leaves a T_MOVED object that contains a
forwarding address.

Похоже, при таком обмене происходит перемешивание объектов. Это видно даже на приведённой в объяснении по ссылке иллюстрации, где №6 становится №3, а №5 — №4. При большей дистанции между объектами "перемешивание" окажется сильнее, исходно размещённые рядом объекты окажутся где ни попадя.

Ответить | Правка | Наверх | Cообщить модератору

35. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Аноним (35), 26-Дек-19, 08:57 
Да это вполне возможно.
По поводу целесообразности встраивания в линейки незнаю. Надо тестировать смотреть. Может быть что целесообразно доработать код для этого, а может нет.
Ответить | Правка | Наверх | Cообщить модератору

43. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Аноним (43), 26-Дек-19, 10:58 
> т.е. проблема поиска свободных блоков памяти при сильной фрагментации - "приветик" от создания короткоживущих объектов "на каждый чих".

Интересно бы почитать, как с этим делом в Эрланге, с ихним "share nothing" создание переменных на каждый чих - во все поля.

Ответить | Правка | К родителю #24 | Наверх | Cообщить модератору

53. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Аноним (53), 26-Дек-19, 13:45 
Гугли про generational gc. В эрланге так же как в хацкелле, жабе и прочих сишарпах. С поправкой на тот факт, что в энларге можно собирать мусор в каждом потоке отдельно, не останавливая весь мир.
Ответить | Правка | Наверх | Cообщить модератору

65. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Урри (?), 26-Дек-19, 16:12 
> т.е. проблема поиска свободных блоков памяти при сильной фрагментации - "приветик" от создания короткоживущих объектов "на каждый чих".

Для языков со сборкой мусора это как раз не проблема. Именно в задачах, где надо создавать много короткоживущих объектов языки с GC уделывают традиционные.

Ответить | Правка | К родителю #24 | Наверх | Cообщить модератору

69. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Аноним84701 (ok), 26-Дек-19, 17:20 
>> т.е. проблема поиска свободных блоков памяти при сильной фрагментации - "приветик" от создания короткоживущих объектов "на каждый чих".
> Для языков со сборкой мусора это как раз не проблема. Именно в задачах, где надо создавать много короткоживущих объектов языки с GC уделывают традиционные.

Собственно, с этим никто не спорил.
Просто в конкретных реализациях GC/аллокаторов - иногда таки можно наткнуться на какой-нибудь проблемный случай.
По приведенной ссылке - как раз описана такая ситуация "highly dynamic object-space". Решалась там  (в конце-концов) прикручиванием другого аллокатора: " The problem can be mitigated by linking ruby against ptmalloc3."

Ответить | Правка | Наверх | Cообщить модератору

90. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Совершенно другой аноним (?), 27-Дек-19, 15:39 
http://rus-linux.net/lib.php?name=/MyLDP/hard/memory/memory....
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

91. "Выпуск языка программирования Ruby 2.7.0"  +/
Сообщение от Совершенно другой аноним (?), 27-Дек-19, 15:39 
http://rus-linux.net/lib.php?name=/MyLDP/hard/memory/memory....
Ответить | Правка | К родителю #15 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру