24 декабря Архивач восстановлен после серьёзной аварии. К сожалению, значительная часть сохранённых изображений и видео была потеряна. Подробности случившегося. Мы призываем всех неравнодушных помочь нам с восстановлением утраченного контента!
Аноним 04/08/20 Втр 13:24:49 #1 №226089554 
Безымянный.png
Во многих случаях производительность действительно можно повысить в тысячи раз, и это не преувеличение. В качестве примера исследователи приводят перемножение двух матриц 4096×4096. Они начали с реализации на Python как одного из самых популярных языков высокого уровня. Например, вот реализация в четыре строки на Python 2:

for i in xrange(4096):
for j in xrange(4096):
for k in xrange(4096):
C[j] += A[k] * B[k][j]

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

Переход на более эффективный язык программирования уже кардинально повышает скорость выполнения кода. Например, программа на Java будет выполняться в 10,8 раз быстрее, а программа на С — ещё в 4,4 раза быстрее, чем на Java. Таким образом, переход с Python на C означает повышение скорости выполнения программы в 47 раз.

И это только начало оптимизации. Если писать код с учётом особенностей аппаратного обеспечения, на котором он будет выполняться, то можно повысить скорость ещё в 1300 раз. В данном эксперименте код сначала запустили параллельно на всех 18 ядрах CPU (версия 4), затем использовали иерархию кэшей процессора (версия 5), добавили векторизацию (версия 6) и применили специфические инструкции Advanced Vector Extensions (AVX) в версии 7. Последняя оптимизированная версия кода выполняется уже не 7 часов, а всего 0,41 секунды, то есть более чем в 60 000 раз быстрее оригинального кода на Python.

Знаете почему софт сейчас медленное говно? Потому что его пишут питоне.
Аноним 04/08/20 Втр 13:27:20 #2 №226089712 
Бамп
Аноним 04/08/20 Втр 13:30:47 #3 №226089924 
Бамп
Аноним 04/08/20 Втр 13:31:55 #4 №226090007 
>>226089554 (OP)
Табличка малополезна, потому что не понятно о каком конкретно процессоре идёт речь. Вообще задача перемножения матриц довольно удобна для выжимания максимально возможного количества флопов.

Но с выводом согласен, хоть он и неполон. В нём должен быть не только питон, но и жс.
Аноним 04/08/20 Втр 13:35:36 #5 №226090217 
>>226090007
Ну и да, в табличке тоже мелкая подтасовка: если уж сравнивать, то эквивалентные версии алгоритмов, а не наивный с блочным перемножением, например.
Аноним 04/08/20 Втр 13:36:42 #6 №226090279 
Че за высер, на питоне не перемножение матриц в основном пишут, а используют готовые модули для всяких СУБД, бэкэндов, сложных библиотек с нейронками, эти модули уже написаны на С++ и питон вызывает лишь обёртку. Если ты хочешь писать какой-то низкоуровневый софт в духе йоба-операций с матрицами, офк твоя задача это максимально оптимизировать свой модуль, чтобы потом смузихлёб парой строк мог использовать его.
Аноним 04/08/20 Втр 13:43:05 #7 №226090665 
>>226089554 (OP)
А я думал, почему Майнкрафт так хорошо идет...
Аноним 04/08/20 Втр 13:46:50 #8 №226090884 
image.png
>>226089554 (OP)
Аноним 04/08/20 Втр 13:49:31 #9 №226091058 
>>226090884
Со статьи тоже проебал, да, такая мемная реализация алгоритма, за n^3, и потом такие сравнивают хуй, говно и муравей.
Аноним 04/08/20 Втр 13:50:07 #10 №226091102 
>>226089554 (OP)
Python и перемножение матриц без NumPy? Норм исследования, давай ещё.
Аноним 04/08/20 Втр 13:50:31 #11 №226091130 
>>226090279
>и питон вызывает лишь обёртку
Нахуя для этого использовать питон?
Аноним 04/08/20 Втр 13:51:25 #12 №226091179 
>>226091102
>NumPy
Так эта библиотека написана на С.
Аноним 04/08/20 Втр 13:51:35 #13 №226091187 
>>226091130
Ну, люди зачем-то это написали, и это пользуется спросом.
Чтобы в каждой программе не городить свой оптимизированный велосипед, а использовать готовый
Аноним 04/08/20 Втр 13:53:50 #14 №226091339 
>>226090884
У тебя два вектора длиной 4096, а не матрицы 4096х4096.
Аноним 04/08/20 Втр 13:54:39 #15 №226091377 
>>226091179
Так и Python на чистом Си написан, что его не использовать теперь?
Ты когда компьютер включаешь не думаешь откуда электричество, и как электроны работают в твоём процессоре, почему тут должен думать на чем библиотека написана?
Аноним 04/08/20 Втр 13:59:19 #16 №226091681 
image.png
>>226091339
Аноним 04/08/20 Втр 14:19:18 #17 №226092786 
>>226091377
>Так и Python на чистом Си написан, что его не использовать теперь?
Только питон криво написан на чистом Си.

Питон ущербный язык програмирования.
Аноним 04/08/20 Втр 14:30:54 #18 №226093479 
>>226092786
По сути Python уже не совсем язык программирования, это уже язык алгоритмизации. Не UML ещё, но по задачам намного ближе к нему.

Можешь кратко объяснить в чем его ущербность?
Аноним 04/08/20 Втр 14:45:36 #19 №226094489 
>>226089554 (OP)
Потому что РЫНОЧЕК, в современных реалях нужно быстро написать прогу что бы конкуренты не опередили и не собрали все деньги (после чего твоя версия проги нахуй никому не упадет).
Ну и отсюда вытекает:
1. Никто тебе не даст оптимизировать функцию неделю и давать на написание калькулятора пару лет чтоб калькулятор работал на 20% быстрее аналога на электроне например
2. Если все оптимизировать как ты хочешь то цена продукта будет в 100 раз выше (нужно больше погромисто-часов), а из-за этого мало кто будет покупать твой продукт т.к. он быстрее на 20% но дороже на 10000%
Типа вот что ты выберешь купить винду 11 за касарь но для которого нужна среднепека или за 100к но которая будет работать на говне из нулевых?
3. Там где надо все оптимизированно, типа какие нибудь проги для военных/космоса оптимизированны почти максимально
Аноним 04/08/20 Втр 14:49:25 #20 №226094735 
>>226090884
numpy написана на си
Аноним 04/08/20 Втр 15:46:31 #21 №226098378 
>>226093479
>Можешь кратко объяснить в чем его ущербность?
Нету фигурных скобок, непонятно где операция началась и где заканчивается при большой вложенности.
Нету строгой типизации, непонятно с какими данными работаешь.
Аноним 04/08/20 Втр 15:51:23 #22 №226098696 
кудах кудах, матрицы долго вычисляются, хули они ноют, им дали cuda - перемножай не хочу, нет блядь, хочу на питоне без библиотек и типов данных перемножать
Аноним 04/08/20 Втр 15:52:07 #23 №226098735 
>>226094489
Двачую. Сейчас просто полно долбоёбов, которые хотят чтобы всё было ультраоптимизированно, но они при этом не понимают, что на это придётся потратить в десятки раз больше времени и средств. Но в быту это нахер не нужно, в быту нужно чтобы решение было выполнено как можно дешевле и быстрее, а отимизированность должна быть лишь приемлемой, но не самой лучшей.
Аноним 04/08/20 Втр 15:59:25 #24 №226099186 
>>226098378
От скобок тоже бомбил, когда переезжал на Python. Вкусовщина и привычка, не более.

Тип данных var присутствует во многих языках, а в C# так и вовсе рекомендуется разработчиком. Очень часто экономит память.

Python язык быстрого прототипирования, в серьёзный продакшн его засунет только конченный.

Веб не в счёт. Там к сожалению нет альтернатив на текущий момент.
Аноним 04/08/20 Втр 16:04:26 #25 №226099519 
>>226099186
А node?
sageАноним 04/08/20 Втр 16:05:54 #26 №226099591 
>>226094735
и чё? ну написана и написана, удобно написана, нахуя мне толкать руку в говно в си ради перемножения матриц если могу юзать сладкий как мёд питон?
Аноним 04/08/20 Втр 16:11:18 #27 №226099884 
>>226099519
Согласен. Про node забыл
Аноним 04/08/20 Втр 16:14:47 #28 №226100088 
>>226098735
>что на это придётся потратить в десятки раз больше времени и средств
Значит этой проблемой должно заниматься государство, если частным корпорациям это не выгодно.
Аноним 04/08/20 Втр 16:15:08 #29 №226100116 
>>226089554 (OP)
На питоне такие задачи никто не решает дурачок, есть специальные либы для этого, cython, numba и прочее.
Аноним 04/08/20 Втр 16:16:10 #30 №226100190 
>>226098378
> Нету строгой типизации, непонятно с какими данными работаешь.
Ты из какого года капчуешь?
Аноним 04/08/20 Втр 16:20:01 #31 №226100432 
>>226099186
>Тип данных var в C#
Аноним 04/08/20 Втр 17:03:04 #32 №226103320 
>>226100088
То есть ты согласен на то, чтобы на твои доходы ещё процентов 20 налога повесили на такое дело и те ресурсы, которые бы ты мог потратить на что угодно тратились бы на сверхоптимизированные програмки? Если да, то ты дебил.
Аноним 04/08/20 Втр 17:04:39 #33 №226103443 
>>226100432
Так он там реально есть, я сам это охренел, когда по одной теме искал пример кода, а там var в C# использовался.
Аноним 04/08/20 Втр 17:10:39 #34 №226103815 
>>226103320
>чтобы на твои доходы ещё процентов 20 налога повесили
Кроме налогов есть еще доход от продажи ресурсов, не обязательно туда тратить налоги.
Аноним 04/08/20 Втр 17:15:42 #35 №226104160 
>>226089554 (OP)
Что тебе мешает написать на си модуль для пайтона?
Аноним 04/08/20 Втр 17:16:00 #36 №226104181 
>>226089554 (OP)
А как же тензорные ядра и глубокое обучени. Либы все на питоне и юзают их, как раз для перемножения матриц. Дело не в языке, а то что либы не заюзали в нем.
Аноним 04/08/20 Втр 17:30:50 #37 №226105187 
>>226103815
Ну то есть тебе норм будет, если те деньги с продажи ресурсов, которые уходили, там, на пусть и довольно хреновые в наших реалиях, но всё же образование, медицину, дороги и всё такое теперь будут идти на ультраоптимизированные программы?
Аноним 04/08/20 Втр 17:36:17 #38 №226105503 
Лол, cpu-bound таска на питоне без мультипроцессинга.
Давай так же эту таску на 8 ядер распараллелим и посмотрим?

Ну и не стоит забывать, что у каждого языка своя ниша, никому, например, не пожелаешь писать сервак на си или джаве (да-да, спринг, идите нахуй)
Аноним 04/08/20 Втр 17:38:06 #39 №226105616 
А, ну и если открывать глаза людям на медленность и тормознутость софта + -дохера оперативы, то это потому что подавляющее большинство софта написано с использованием електрона (это такая херня на основе хромиума для того, чтобы на разных осях твоя прилажка выглядела одинаково). Т.е. во всем виноват js, держу в курсе
Аноним 04/08/20 Втр 17:45:42 #40 №226106099 
Вот бы щяс матрицы на петоне перемножать без NumPy, PyCUDA и другой хипстоты
comments powered by Disqus

Отзывы и предложения