внезапно нет. Если это не go или erlang, то люди все также частенько забивают на параллельность, а если нет то бывает, что в 1 поток быстрее чем даже в 4
Большинство игр и много приложений вполне себе используют больше одного ядра. Сужу по графикам в таск менеджере.
вот только подавляющее большинство программ не игры
а большенству и не надо больше 1 ядра..
а ничего, что многие пользуется сразу несколькими программами? у меня, например, кроме основного рабочего софта всегда браузер открыт
тут вопрос не на уровне ОС, а на уровне софта
"640 КБ на самом деле хватит всем"
Подавляющему большинству программ и одного выше крыши. Если только всякие рендеренги и пр. инженерные программы.
скажи это видеу на ютубе открытому в хроме.
И зачем ему много ядер? И 4к и так идёт шустро даже на древности.
То что они используют больше одного ядра еще не значит что нагрузка равномерно распределена. И те же самые игры как правило невозможно полностью распараллелить, все равно какое-то ядро отдувается за всех как на картинке.
Абсолютно равномерно и не получится. То одно больше остальных на себя берет, то другое.
Ни абсолютно равномерно, "то одно, то другое берет больше" это не то что происходит в случае игр. Есть основной поток выполняющий лвиную часть нагрузки и сильно грузящий своё ядро, и есть часть распаралелленых вычислений размазанных по другим ядрам. Потому что полностью распаралеллить игру невозможно, и даже то что можно это огромный гемор разрабам и они не будут это применять при каждой возможности. Все равно большинство нагрузки будет сосредоточено в основном потоке, и с одного ядра на другое она прыгать никак не будет.
видимо, основным, ядром становится то одно, то другое.
"главный поток" есть в любой программе, вне зависимости от её типа, и от него будут исходить дополнительные потоки. А вот будет ли он самым нагруженным - не факт, он может и просто дочерними потоками управлять.
То-есть есть у проца многа ядер но они немощные как у зеонов или старой рязани, то игра будет фризить и подтормаживать, из-за того что основной поток выполняется на одном маломощном ядре я так понял?
Может и использую, но 1 ядро грузится на 100%, пока остальные на 20-40%
>Если это не go или erlang
В .net и java очень мощные средства для многопоточности. Распараллелить цикл в C# - элементарно.
В node.js 14 наконец добавили worker_threads для "execute JavaScript in parallel" (привет тормозному Электрону, может быть хоть теперь полегчает)
В С++/Qt работу с многопотоком облегчает QThread, но за его простоту я ничего не скажу
>бывает, что в 1 поток быстрее чем даже в 4
разве что в Python - из-за GIL. Но, к счастью, десктопные программы на нём пишут не часто.
В .net и java очень мощные средства для многопоточности. Распараллелить цикл в C# - элементарно.
В node.js 14 наконец добавили worker_threads для "execute JavaScript in parallel" (привет тормозному Электрону, может быть хоть теперь полегчает)
В С++/Qt работу с многопотоком облегчает QThread, но за его простоту я ничего не скажу
>бывает, что в 1 поток быстрее чем даже в 4
разве что в Python - из-за GIL. Но, к счастью, десктопные программы на нём пишут не часто.
В python нет мультипоточности из-за GIL, но есть многопроцессорность. Это жрет больше ресурсов, но хотя бы на самом деле параллелится
в том и дело, что интерпретатор питона жирный и неповоротливый, а плодить их в памяти целую пачку - так себе идея в рамках десктопа. Кмк, имеет смысл разве что на адовой математике (с биндами к с-либам) или на долгих сетевых операциях к разным серверам.
1 быстрее 4 может из-за оверхэда на переключение контекста и блокировки на мьютексах и всего такого. Просто сделать параллельно я согласен сделать не так сложно, а вот чтобы это было оптимально или хотя бы дало прирост это вопрос по сложнее
а как насчёт распараллеливания рекурсивных алгоритмов, когда у тебя параллельно фигачит ещё какой-нибудь тяжёлый цикл, который эту рекурсию ещё и изменяет
1) рекурсия в принципе очень поганная вещь в плане скорости работы, эффективный код избегает всеми силами
2) очень специфическая ситуация. но даже если два потока зависят друг от друга, это всё еще быстрее однопотока
2) очень специфическая ситуация. но даже если два потока зависят друг от друга, это всё еще быстрее однопотока
рекурсию порой и не избежать, вот то что быстрее это да вот только с ростом потоков скорость будет падать вплоть до отрицательной. Ещё есть такой момент алгоритм можно распараллелить ровно на 2 потока и тут появляется "прикол" оба потока могут попасть на 1 ядро и скорость упадёт. именно поэтому порой если вырубить потоки и работать исключительно на ядрах можно увеличить скорость.
1) Могут попасть, а могут не попасть. Больше ядер - меньше вероятность. Однопоточная задача тоже не постоянно выполняется и больше процессорного времени точно получить не сможет
2) для такой погани в том же c# есть эвенты и очереди задач. Вообще же не видя ТЗ реальной задачи трудно теоретизировать на такие темы. Нагенерить ситуаций, которые могут наплодить deadlock'ов и race condition и я могу
2) для такой погани в том же c# есть эвенты и очереди задач. Вообще же не видя ТЗ реальной задачи трудно теоретизировать на такие темы. Нагенерить ситуаций, которые могут наплодить deadlock'ов и race condition и я могу
Гхм... Си, гхм... Фортран. Основной тяжелый числодробительный софт, который загрузит все ваши ядра, хоть 16, хоть 256, написан на них. Но если мы говорим не о каких-то числодробительных задачах, которые легко (сравнительно) параллелятся, а о том, что насущно для обычного десктопного юзера - ОС, всякий интерактивный софт, игры, то там беда не в языках, а в том, что задачи плохо параллелятся. Да там, наверное, зачастую и нечего параллелить. Какой-нибудь условный Word сидит и обрабатывает эвенты юзер интерфейса, крутит туда-сюда какие-нибудь злоебучие объекты, там память аллоцирует, тут память освобождает, тут системные вызовы итп итд. А если говнософт написан еще на каком-нибудь интерпретаторе или, на худой конец, JVM/CLR, то там начинается косвенные вызовы косвенныи вызовами погоняют, указатели-указатели, кэш-промахи и прочее говно.
З.Ы. Большинство сложного софта многопоточные, ИМХО, даже если не имеют с этого профита по производительности, даже если большинство потоков сидят спящими в ожидании какого-нибудь семафора. Так банально проще писать, чем превращать все это в большой однопоточный конечный автомат.
ЗЗЫ. Вот у тебя есть ворд, крутит одно ядро, а тут фотошоп на другом ядре, а тут браузер расплодил 20 процессов, тоже по ядрам раскидало, а тут ОС эвенты обрабатывает и ГУИ рисует... В итоге от мультикора все равно профит есть.
З.Ы. Большинство сложного софта многопоточные, ИМХО, даже если не имеют с этого профита по производительности, даже если большинство потоков сидят спящими в ожидании какого-нибудь семафора. Так банально проще писать, чем превращать все это в большой однопоточный конечный автомат.
ЗЗЫ. Вот у тебя есть ворд, крутит одно ядро, а тут фотошоп на другом ядре, а тут браузер расплодил 20 процессов, тоже по ядрам раскидало, а тут ОС эвенты обрабатывает и ГУИ рисует... В итоге от мультикора все равно профит есть.
Работаю в Unity. И ситуация как на картинке. Особенно когда внес любое изменение и оно тебе всё перекомпилирует.
Но если бы мой комп был с 2-ным, не говоря уже об 1-ом, то 40 сек. компиляция была б раза в 3 дольше.
Но если бы мой комп был с 2-ным, не говоря уже об 1-ом, то 40 сек. компиляция была б раза в 3 дольше.
С юнити не сталкивался, но C++ компилируется каким-нибудь cmake + make в параллель, сожрет столько, сколько есть. Правда, параллелизм идет именно по единицам трансляции, так что если непосредственно объектников, которые надо компилировать, мало, но они жирные, никакие потоки не помогут.
В никсах для этого придумали ccache, но не в курсе можно ли его прикрутить к unity
В C# половина всего делается асинхронно. В nodejs - 3/4 - там, блин, даже операция чтения содержимого директории, т.е. тупо списка файлов - и та асинхронна. В вебе есть воркеры. Ну, а там, где нет тредов, всегда есть тупо форк.
Вполне себе есть игры с убер хуйовой оптимизацией, которые так и работают.
На самом деле это проблема софтверная
А точнее оптимизации
То чувство, когда тебе объясняют работу того, чего у тебя в 4 раза меньше...
Два ядра, два гига?
Ну хоть не игровая видеокарта, всего лишь 550Ti
Как не странно 550 как раз игровая. А вот 520 всякие...
Как-то купил 520 с пассивным охлаждением, соблазнившись ценой в 1200₽. Надо ли говорить, какой дичайший пердёж потом стоял, даже если most wanted 2010 на минималках запускал
У меня rx 470 и двухядерный i3 4150 шестилетней давности. Большинство игр даже норм идет. Вон Gears Tactics на ультрах фпс 40-50 выдает. Дум Этернал тож считай на ультре меньше лока в 75 фпс не опускался. По большей части от движка зависит - у юбисофт например движки Anvil и Snowdrop жутко прожорливые в плане цпу.
Где CORE 0 ?
Пинает хуи, крутя операционку.
В сообществе Стеллариса в стиме, эта же гифка в топе, и не просто так
Что за софтина для таких показателей?
MSI Afterburner
msi afterburner
Revolver Ocelot говоришь?
это MSI Afterburner да?
Слушай, я не совсем уверен, но говорят, что это MSI Afterburner
Еще в стиме есть классная "FPS monitor".
RTSS Rivatuner Statistics Server
у тебя какая то обрезанная версия
Ох, сука.
Я аж услышал этот премерзкий скрежещущий звук.
Я аж услышал этот премерзкий скрежещущий звук.
Snapdragon 865
Чтобы написать коммент, необходимо залогиниться
Отличный комментарий!