|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravВы понимаете что этот вызов normalize() - это два обращения к подсистеме динамической памяти и эти обращения блокируют все потоки, которые в это время тоже вызывают new/delete и тому подобное. А ты понимаешь, что другого пути нет и все остальные языки "с поддержкой строк на уровне языка" делают под капотом всё то же самое? Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 16:55 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravВы понимаете что этот вызов normalize() - это два обращения к подсистеме динамической памяти и эти обращения блокируют все потоки, которые в это время тоже вызывают new/delete и тому подобное. А ты понимаешь, что другого пути нет и все остальные языки "с поддержкой строк на уровне языка" делают под капотом всё то же самое?пусть блокируют. ГУИ в одном основном потоке. Исходя из старых практик разработки UI. Нету прямой интеракции UI и объектов мультипоточности. Обычно создается некий транспортный объект Model. Этот модел бегает туда-сюда от пользовательской формочки к объекту представляющему собой WorkerProcess(Thread). Блокировки резольвятся на классичесокй optimiztic/pessimistic transaction и мы выбираем тот режим который будет комфортным для конечного пользователя или тот режим который будет гладко ложиться на бизнес-процесс. Представить себе ситуацию что пользователь с высокой частотой долбит через UI по объектам процессов мне сложно. Посмотрите как работают high-load социальные сети. Если бы графические объекты хоть что-то блокировали то весь фейсбук сидел бы 100% времени в блокировках. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:01 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravВы понимаете что этот вызов normalize() - это два обращения к подсистеме динамической памяти и эти обращения блокируют все потоки, которые в это время тоже вызывают new/delete и тому подобное. А ты понимаешь, что другого пути нет и все остальные языки "с поддержкой строк на уровне языка" делают под капотом всё то же самое? Это - предположение. 99% это зависит от того как будет написан код поточного метода. Он может работать со старой версией строки создав предварительно ее копию. Он может работать с референсом на строку для immutable strings. Мы можем ввести понятие версионной строки и отслеживать некое атомарное состояние счетчика транзакций над строками. И все это автоматизировать. Кстати здесь я еще больше согласен с Сидоровым что строка это все-таки не массив char[] как бы мне этого не хотелось. Вобщем.. исходя из наблюдения. Больше блокировок на I/O, Networking чем собстенно на строковых объектах. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:03 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravВы понимаете что этот вызов normalize() - это два обращения к подсистеме динамической памяти и эти обращения блокируют все потоки, которые в это время тоже вызывают new/delete и тому подобное. А ты понимаешь, что другого пути нет и все остальные языки "с поддержкой строк на уровне языка" делают под капотом всё то же самое? Я прямо сейчас готов написать функцию которая докажет тебе что это не так. Но в упрощённом сценарии. Все буквы ASCII, но в одной строке встречается восьмибитная Й, а в другой последовательность ЁЁ и эти строки считаются равными? Если ты хочешь функцию на реальной реализации utf-8, то не просто так, но я сделаю. :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:07 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petravВы понимаете что этот вызов normalize() - это два обращения к подсистеме динамической памяти и эти обращения блокируют все потоки, которые в это время тоже вызывают new/delete и тому подобное. Исходя из старых практик разработки UI. Нету прямой интеракции UI и объектов мультипоточности. Обычно создается некий транспортный объект Model. Этот модел бегает туда-сюда от пользовательской формочки к объекту представляющему собой WorkerProcess(Thread). Блокировки резольвятся на классичесокй optimiztic/pessimistic transaction и мы выбираем тот режим который будет комфортным для конечного пользователя или тот режим который будет гладко ложиться на бизнес-процесс. Представить себе ситуацию что пользователь с высокой частотой долбит через UI по объектам процессов мне сложно. Посмотрите как работают high-load социальные сети. Если бы графические объекты хоть что-то блокировали то весь фейсбук сидел бы 100% времени в блокировках. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:09 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp, я прошу прощения. Случайно изменил твой пост. Как откатить - не знаю. Но - перепость заново а я старый удалю. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:10 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton, Ok Мне не трудно. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:12 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav эти обращения блокируют все потоки ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:13 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav эти обращения блокируют все потоки Да... GUI однопоточный. Но он активно использует динамическую память. И если поток логики тоже агрессивно использует динамическую память, то поток GUI будет регулярно блокировать потоки логики. Просто в ваших задачах вам не нужно заботиться о производительности в таких мелочах и вы просто не знаете об этом. Но не во всех случаях это приемлемо. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:17 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Посмотрите как работают high-load социальные сети. Если бы графические объекты хоть что-то блокировали то весь фейсбук сидел бы 100% времени в блокировках. Да ты перепутал распределённый фейсбук и приложение работающее на одном компьютере. Что такое Фейсбук в комплекте: - Огромное количество браузеров внутри которых работает программа на JS. - Огромное количество кеширующих серверов. - Огромное количество серверов логики и серверов БД. - Сколько процессов запущено сейчас на всех этих серверах? - Сколько RAID массивов задействовано, сколько виртуальных машин? Да там даже графические объекты расположены на тонких клиентах! Причём тут обычное приложение на C++? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:23 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav И если поток логики тоже агрессивно использует динамическую память, то поток GUI будет регулярно блокировать потоки логики. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:24 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Как независимые потоки будут мешать друг другу? Кто тут гуи хотел отделить? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:25 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton Посмотрите как работают high-load социальные сети. Если бы графические объекты хоть что-то блокировали то весь фейсбук сидел бы 100% времени в блокировках. Да ты перепутал распределённый фейсбук и приложение работающее на одном компьютере. Что такое Фейсбук в комплекте: - Огромное количество браузеров внутри которых работает программа на JS. - Огромное количество кеширующих серверов. - Огромное количество серверов логики и серверов БД. - Сколько процессов запущено сейчас на всех этих серверах? - Сколько RAID массивов задействовано, сколько виртуальных машин? Да там даже графические объекты расположены на тонких клиентах! Причём тут обычное приложение на C++? Стоп. Давай немного отложим обсуждение фейсбука. Расскажи какие графические приложения ты разрабатываешь? Я не знаю. Возмножно они у тебя очень плотно интерактируют с рычагами и джойстиками и средствами ввода. Просто обычный казуальный пользователь вводя неспеша с клавиатуры буквы просто физически не успевает ничего сильно заблочить. Или у тебя просто неверно разработана архитектура твоей Юайки. Подумай о optimiztic. Расскажи что у тебя там под капотом. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:27 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav, Как независимые потоки будут мешать друг другу? Кто тут гуи хотел отделить? Дело в том что структура динамической памяти - это по сути Синглетон. Любое обращение к ней (new/delete/malloc/free) - это блокировка. Можно, конечно, подумать о том, что бы, например, в DLL логики у нас была своя отдельная куча (и отдельный рунтайм) и мы возвращаем только интеллектуальные указатели в которых есть свой deleter. Но как-то я пока не встречал таких идей в статьях. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:32 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Любое обращение к ней (new/delete/malloc/free) Ну ссылки то где что это проблема стоит обсуждения вообще? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:38 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Стоп. Давай немного отложим обсуждение фейсбука. Расскажи какие графические приложения ты разрабатываешь? Я не знаю. Возмножно они у тебя очень плотно интерактируют с рычагами и джойстиками и средствами ввода. Просто обычный казуальный пользователь вводя неспеша с клавиатуры буквы просто физически не успевает ничего сильно заблочить. Или у тебя просто неверно разработана архитектура твоей Юайки. Подумай о optimiztic. Расскажи что у тебя там под капотом. Да ничего особенного. Работа с промышленным оборудованием. Мягкое реальное время приветствуется. Естественно не в потоке GUI. И, конечно, это не принципиально критично, поэтому оно мягкое и поэтому десктоп. Но проблемы такие бывают. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:41 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav, Давай сделаем два потока и будем там создвать строку с выводом в лог. 5 минут работы. Будет тормозить доступ к памяти? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:42 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav mayton Стоп. Давай немного отложим обсуждение фейсбука. Расскажи какие графические приложения ты разрабатываешь? Я не знаю. Возмножно они у тебя очень плотно интерактируют с рычагами и джойстиками и средствами ввода. Просто обычный казуальный пользователь вводя неспеша с клавиатуры буквы просто физически не успевает ничего сильно заблочить. Или у тебя просто неверно разработана архитектура твоей Юайки. Подумай о optimiztic. Расскажи что у тебя там под капотом. Да ничего особенного. Работа с промышленным оборудованием. Мягкое реальное время приветствуется. Естественно не в потоке GUI. И, конечно, это не принципиально критично, поэтому оно мягкое и поэтому десктоп. Но проблемы такие бывают. Я прошу прощения. Ты можешь мобилой сфоткать твой UI ? Без торговых обозначений. Без лейблов. Просто какой-то функционал. Я просто пытаюсь понять что за такая там у вас отрасль где нужно UI так тесно интегрировать с динамической памятью и строками. Насчет рантайма я не имею ничего против. Просто интересно где это критично. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:46 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
PetroNotC Sharp petrav, Давай сделаем два потока и будем там создвать строку с выводом в лог. 5 минут работы. Будет тормозить доступ к памяти? Давай. Рабочий поток выводит на 1000 Гц, а поток GUI в тот же поток на 100 Гц. Мне интересна статистика по времени выделения памяти и вывода в лог. В обоих потоках. Статистика с помощью Windows API QPC. Жду результатов. И на слабых компьютерах тоже. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:49 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
А зачем UI в 100 Гц? Я слышал что в топовых играх видяшки переключают front-back buffer до 120Гц. Но это игра. Где плавность изменения графики - просто видно боковым зрением. И не более того. А научные испытания на кроликах людях и обезянах показали что человек реагирует и осознает изменения UI с периодом в 100 милисекунд. Это примерно соответствует 10 герцам. Можно и выше - но на реакцию человека и на принятие решения это не влияет. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:53 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton А зачем UI в 100 Гц? Я фигею. Мы о чем вообще тут говорим? 3D render? ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 17:58 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton А зачем UI в 100 Гц? 100 Гц в UI действительно излишне. Я привёл это для того что бы потоки с большей вероятностью вмешивались друг в друга. Но он может создать несколько рабочих потоков и там логировать на 500 Гц. Фотографировать UI, наверное, не стоит... В любом случае. :) Но там ничего необычного нет. GUI в любом случае агрессивно использует динамическую память. И я думаю лучше рабочие потоки максимально изолировать. Можно создать отдельную кучу с помощью Windows API, можно логику вынести в отдельные процессы. Но это усложнение и на него нет времени. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:01 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
Мне кажется но.. Microsoft Powe Point на на анимациях и спец-эффектах слайдов .. фейдингов как раз и обеспечивает те самые 10 герц. Экономно. CPU не грузит. И люди довольны. Как Anime-сериал прям. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:02 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
petrav Фотографировать UI, наверное, не стоит... В любом случае. :) Но там ничего необычного нет. GUI в любом случае агрессивно использует динамическую память. И я думаю лучше рабочие потоки максимально изолировать. Можно создать отдельную кучу с помощью Windows API, можно логику вынести в отдельные процессы. Но это усложнение и на него нет времени. Я в этом смысле наверное похож на Торвальдса. Я - инженер. И люблю решать инженерные головоломки. И мне глубоко безразлина контора в которой ты работаешь. И я очень удивлён тем что ты нашел (!) реально нашел проблему аллокации строк на СТЫКЕ UI и динамической памяти. Я - правда удивлен. И мне кажется что если мы глубоко копнём в твою проблему ... она окажется вообще не проблемой а просто архитектурной фичей которая фиксится быстро. Ты вот думаешь что для comparison двух utf-8 строк тебе надо обязательно ре-аллоцировать (malloc/realloc) память? А я вот так не думаю. Мне вот кажется что мы в состоянии решить эту задачу алгоритмически. Давай просто разделим понятия хранения (storage) utf-8 строк и их представления (representation). ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:07 |
|
MSVC и GCC: совместимость кодировок исходников
|
|||
---|---|---|---|
#18+
mayton Мне кажется но.. Microsoft Powe Point на на анимациях и спец-эффектах слайдов .. фейдингов как раз и обеспечивает те самые 10 герц. Экономно. CPU не грузит. И люди довольны. Как Anime-сериал прям. С Повер-Поинт вообще проблем нет. Но речь идёт о работе с промышленным оборудованием и часто используя слабые компы. А не анимация про Си-шарп или про трусы модной фирмы. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.12.2019, 18:07 |
|
|
start [/forum/topic.php?fid=57&msg=39897196&tid=2017506]: |
0ms |
get settings: |
9ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
55ms |
get tp. blocked users: |
1ms |
others: | 269ms |
total: | 400ms |
0 / 0 |