powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / MSVC и GCC: совместимость кодировок исходников
25 сообщений из 409, страница 16 из 17
MSVC и GCC: совместимость кодировок исходников
    #39897254
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravМы рассуждаем о вопроса производительности.

"Давайте спорить о вкусе устриц. До хрипоты." (с)
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897256
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Автор говорит у него - слабое железо. Ну там не i7 скорее всего.
вот кстати на слабом старом железе получаются наибольшие выигрыши от Lock-Free алгоритмов
ибо там особо ещё нет таких сильных проблем со сбросом кеша
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897258
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)
petrav
пропущено...

Синтетического теста у меня нет. Но давай представим себе, что мы с тобой реализуем Си-рантайм и функции malloc/free. Очевидно нам потребуется некоторая структура данных, которая хранит (так или иначе) список свободных и занятых участков памяти? Или нет? При этом нужно учесть, что блок памяти выделенный в одном потоке может быть освобождён в другом потоке. Как разные потоки будут одновременно обращаться с этой структурой? Я буду рад если что-то не понимаю.
всё пучком, расходимся
современные менеджеры памяти за исключением специфических не используют явных блокировок и уж тем более семафоров, практически все уже lock-free - там уже больше всё в сброс кеша процессора упирается

по факту 40 млн. выделений сбросов/сек на i7 в жёсткой конкуренции

больше выдают только сильно специфические, вроде хаотических - но там свои приколы

И как же это работает? Ну просто теоретически, как реализовать менеджер памяти в lock-free стиле? Менеджер памяти реализован на уровне процессора? В последний раз с помощью Interlocked (lock-free) функций из Windows API получалось только стек 32-х битных значений реализовать, но список уже не получалось.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897260
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton,
Пора спорить на коньяк что нет у ТС этой проблемы.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897262
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton

Ну хорошо. Пускай. Но ты можешь запустить профилировщик. И посмотреть по стеку за 1 шаг до того
как зайти в синглтон какой прикладной код за этим стоит? Что он делает? Зачем он так много
и так часто лезет в синглтон?

У меня ничего и никуда часто не лезет Мы рассуждаем о вопроса производительности. И да это не похоже на разработку web-серверов на Шарпе где просто докупают ещё один сервер в стойку, хотя и там всё сложно.

Мы ходим по кругу. Идет 16-я страница а ты всё-таки не был убедителен в том что была проблема memory
manager.

Я с удовольстием на нее навалился-бы. Но мне валится пока некуда. Если я сам буду писать синтетические
бенчмарки которые выделяют и убивают строки - это будет какая-то шизофрения. Ты согласен?

Тем более что я - убежден что обще-системные библиотеки зачастую лучше чем мы о них думаем.
И анализ производительности измерительными штуками обычно показывает что мы их просто не так
используем. А это уже - вопрос к прикладному коду.

Вобщем я убежден что у тебя есть проблема в прикладном коде. Не в строках и не в мемори менеджерах.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897263
Фотография полудух
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
по-моему последние 15 страниц мы обсуждаем сферического коня в комнате, где его нет...
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897268
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravНу просто теоретически, как реализовать менеджер памяти в lock-free стиле?

Дерево свободных блоков для минимизации времени нахождения в критическом коде и спинлоки,
например.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897269
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton

Мы ходим по кругу. Идет 16-я страница а ты всё-таки не был убедителен в том что была проблема memory
manager.

Я не предлагаю тебе решать мои проблемы и наваливаться на них. В участках кода критичных к производительности я просто стараюсь не обращаться к динамической памяти, не использовать потенциально тяжёлых модулей типа std::stringstream, boost::fomat или boost::stringalgo. Вот в потоке GUI это позволительно.

Стараюсь что бы рабочие потоки как можно меньше блокировались на мьютексах с потоком GUI. У меня нет проблем с реализацией мягкого реального времени даже на слабых компах. Судя по отчётам.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897270
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
И как же это работает? Ну просто теоретически, как реализовать менеджер памяти в lock-free стиле? Менеджер памяти реализован на уровне процессора? В последний раз с помощью Interlocked (lock-free) функций из Windows API получалось только стек 32-х битных значений реализовать, но список уже не получалось.
есть одна большая тайна :-)
для реализации менеджера памяти не обязательно реализовывать такие высокоуровневые конструкции как стек и список

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

ИМХО вообще не стоит по этому поводу заморачиваться, кроме образовательных целей, если вы не пишете что-то очень высокого класса. Лучше стандартных врят ли получится.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897285
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Несколько мыслей.

Я один раз чисто случайно читая Stackoverflow наткнулся на закрытый топик.
Его закрыл модератор стековера. Но больше меня поразила резолюция. Там
было по английски написано. - "Ваш вопрос не имеет прикладного смысла.
Постарайтесь пересмотреть ваше задание." - автор-же в топике просто в цикле
что-то там икрементировал или декрементировал. Вобщем был озабочен какими-то
атомик-бенчмарками и по ним спрашивал. Я давно знал что модеры стековера
очень суровы и решительны. И мне сама по себе идея понравилась. Идея обоснования
многих бенчмарков.

Еще мысль. Давно во времена моей производтвенной практики в *телекомах
мой начальник (большой алкоголик и любитель пошлых анекдотов) устав слушать мои
рац-предложения сказал мне - "Знаешь. У каждой вещи есть своё предназначение.
У жопы - предназначение - делать дефекацию. Или срать. Хотя есть некоторые
мужчины которые ищут у чужой жопы другой смысл."

Вобщем у менеджера памяти (MM) есть своё предназначение. Но нам не стоит
искать или ждать от него (MM) чего-то другого.

Я сильно сомневаюсь что от MM (Linux or Windows) мы выдавим 40 млн
транзакций на выделене (и освобождение). Ведь. задача стоит более широко. Там еще
и идет логика процессинга строк. Физическое копирование. Реаллокация (на расширение).

Вобщем если мы будем DDOS-ить ММ строками то мы будем глупцы. Надо искать решение
прикладное. А системное - уж как нибудь поправят те кто этим занимается давно и
профессионально. Контрибуторы Linux e.t.c.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897300
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Вобщем если мы будем DDOS-ить ММ строками то мы будем глупцы. Надо искать решение
прикладное. А системное - уж как нибудь поправят те кто этим занимается давно и
профессионально. Контрибуторы Linux e.t.c.

Допустим мы на Qt (LOL) пишем высоконагруженный сервер. Вызов QString::normalized() на каждый запрос от клиента будет обращаться к динамической памяти. Как же ты собрался не ДДОС-ить Менеджер Памяти? Да любой высокоуровневый язык программирования тут начнёт ДДОС-ить и ты даже не догадаешься где. Тогда тебе сервер нужно на Си переписывать. Неожиданные от тебя аргументы пошли. :)

Тебе нужно говорить по другому: будет тормозить, расширим кластер ещё на один сервер, который арендуем у провайдера. И это будет правильно, если ваш бизнес приносит деньги и удовлетворяет заказчиков. А ДДОС - да что там такое.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897302
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
пишем высоконагруженный сервер.

Вау.
16 страниц в мусорку.
Начинай по новой.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897304
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Вобщем если мы будем DDOS-ить ММ строками то мы будем глупцы. Надо искать решение
прикладное. А системное - уж как нибудь поправят те кто этим занимается давно и
профессионально. Контрибуторы Linux e.t.c.

Я не очень помню архитектуру веб-серверов. Но насколько помню дело так обстоит:

- Приходит допустим GET запрос от пользователя.
- Из пула потоков берётся свободный поток и данные передаются ему на обработку.
- На сервере есть пул объектов подключения к БД.

Но вот есть ли связанный с каждым потоком ещё и пул строк? И как он вообще мог бы быть реализован, вот интересно. Какая у строк будет длина? Если такого пула нет - то каждый запрос многократное обращение к динамической памяти. А что со всем другими типами и объектами?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897308
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
Вобщем если мы будем DDOS-ить ММ строками то мы будем глупцы. Надо искать решение
прикладное. А системное - уж как нибудь поправят те кто этим занимается давно и
профессионально. Контрибуторы Linux e.t.c.

Допустим мы на Qt (LOL) пишем высоконагруженный сервер. Вызов QString::normalized() на каждый запрос от клиента будет обращаться к динамической памяти. Как же ты собрался не ДДОС-ить Менеджер Памяти? Да любой высокоуровневый язык программирования тут начнёт ДДОС-ить и ты даже не догадаешься где. Тогда тебе сервер нужно на Си переписывать. Неожиданные от тебя аргументы пошли. :)

Тебе нужно говорить по другому: будет тормозить, расширим кластер ещё на один сервер, который арендуем у провайдера. И это будет правильно, если ваш бизнес приносит деньги и удовлетворяет заказчиков. А ДДОС - да что там такое.

Ну смотри. Во первых. Надо быть хитрее. Тебе не надо выделять память
для строк которые НЕ-требуют нормализации. Требует она или нет - можно проверить.

Я опять-же привлекаю в топик для консультации Питон (прошу прощения).
https://docs.python.org/3/library/unicodedata.html
Код: python
1.
2.
3.
4.
5.
unicodedata.is_normalized(form, unistr)

    Return whether the Unicode string unistr is in the normal form form. Valid values for form are ‘NFC’, ‘NFKC’, ‘NFD’, and ‘NFKD’.

    New in version 3.8.


Смело добавляй его в конструктор. И если строка нормализована то - ничего делать не надо. Тоесть ее
поведение будет такое-же как и раньше. Тоесть как работали так и работаем.

Вангую что by use-case таких волшебных комбинаций символов будет очень мало. Нижнаяя часть ASCII-кириллица их почти нет.
Я вот с трудом нагуглил вообще эти примеры.

К сожалению в моей сборке (Python3.6.9.+unicodedata2) этот метод еще не реализован. Надо обновлятся.
Но я думаю что такой предикат должен быть и в Qt, и в cpputf8.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897309
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravНо вот есть ли связанный с каждым потоком ещё и пул строк?

Повторяю ещё раз, медленно: Линукс (GLIBC) на котором крутятся большинство уэб-серверов
использует отдельные кучи для потоков.

Пристрелите уже этот топик. Вместе с аффтаром.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897315
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Ну смотри. Во первых. Надо быть хитрее. Тебе не надо выделять память
для строк которые НЕ-требуют нормализации. Требует она или нет - можно проверить.

Идея хорошая. Но небольшая проблема. У тебя уже есть строка которая выделена на динамической памяти. Просто ты оптимизировал ещё одно выделение. ДДОС ММ никуда не делся. Но да, наверное это должно быть bestpractices по данной тематике.

Тут смысл в бизнес процессах. Работая в определённой сфере ты вынужден использовать Java, C# или Питон ради быстрой разработки. Проблемы производительности решаются добавлением нового сервера в кластер. Ну приблизительно.

Ты так привык и не задумываешься об этом. Но есть куча задач, где так не возможно... Динамическая память всегда была тяжёлой операцией, особенно в многопоточном окружении. И нельзя добавить сервер в кластер и реагировать нужно как можно быстрее. Это твой клиент ОнлайнСбербанка может подождать там 1-2 секунды. Есть вещи которые не ждут.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897320
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
Ну смотри. Во первых. Надо быть хитрее. Тебе не надо выделять память
для строк которые НЕ-требуют нормализации. Требует она или нет - можно проверить.

Идея хорошая. Но небольшая проблема. У тебя уже есть строка которая выделена на динамической памяти. Просто ты оптимизировал ещё одно выделение. ДДОС ММ никуда не делся. Но да, наверное это должно быть bestpractices по данной тематике.

Тут смысл в бизнес процессах. Работая в определённой сфере ты вынужден использовать Java, C# или Питон ради быстрой разработки. Проблемы производительности решаются добавлением нового сервера в кластер. Ну приблизительно.

Ты так привык и не задумываешься об этом. Но есть куча задач, где так не возможно... Динамическая память всегда была тяжёлой операцией, особенно в многопоточном окружении. И нельзя добавить сервер в кластер и реагировать нужно как можно быстрее. Это твой клиент ОнлайнСбербанка может подождать там 1-2 секунды. Есть вещи которые не ждут.

Давай еще один инженерный вопрос.

Каким образом эта строка у тебя появилась в системе?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897322
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
Давай еще один инженерный вопрос.

Каким образом эта строка у тебя появилась в системе?

Допустим она пришла через GET запрос. Я как бы уже очень много лет не работаю в web, так что... :)

При этом, мы заранее не знаем какие именно параметры нам придут. Параметры мы получаем через коллекцию строк. Допустим пришёл "productName" и по логике это имя товара, который наш клиент уже покупал. Так же из БД мы подгрузили имя производителя, адрес доставки, имя курьера и хотим сделать отчёт. При этом такой товар клиент мог покупать многократно.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897323
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
Допустим она пришла через GET запрос.
какого хера мы в топике в веб полезли?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897326
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У вас - винда. И вы работаете с вебом через http. А какая библиотечка там стоит?
Возможно Windows Sockets API? Или поверх нее там еще какая-то механика
стоит наподобие HttpClient.

Я почему все это спрашиваю. Стек - не такой уж короткий. Строки путешествуют по уровням
этой модели. И у нас - много точек где можно применить оптимизации и трансформации.

Возможен такой вариант что вопрос кодировок решается на HttpServer. Например когда
клиент коннектится он шлёт атрибут Accept-Charset где он сообщает серверу
что он ПРИНИМАЕТ ответы в такой-то кодировке.

https://developer.mozilla.org/ru/docs/Web/HTTP/Заголовки/Accept-Charset
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897328
PetroNotC Sharp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav ,
Дело ваше, слушать или нет.
Но в десктопе, веб и 3D визуализации совершенно разные архитектуры и методы программирования.
Если прыгаете с одного на другое как школьник, это идиотизм.
Удачи!
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897343
petrav
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
У вас - винда. И вы работаете с вебом через http. А какая библиотечка там стоит?
Возможно Windows Sockets API? Или поверх нее там еще какая-то механика
стоит наподобие HttpClient.

Мы обсуждаем сервер.

mayton
Я почему все это спрашиваю. Стек - не такой уж короткий. Строки путешествуют по уровням
этой модели. И у нас - много точек где можно применить оптимизации и трансформации.

Да можно то можно. Только я с трудом себе представляю как ты гарантируешь какой-нибудь StringMap (условное название) из Java что бы он на стеке был? Это даже для C++ странная задача.

Кстати интересная тема: Dynamic Lock-free memory allocators . Плохо с английским. :( Где-то на половину понял. Но что-то мне подсказывает, что там проблем ещё больше чем я думал. Нужно углубляться.
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897346
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petravМы обсуждаем сервер.

Внезапно. А ведь ещё недавно это был "офисный софт".
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897348
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav
mayton
У вас - винда. И вы работаете с вебом через http. А какая библиотечка там стоит?
Возможно Windows Sockets API? Или поверх нее там еще какая-то механика
стоит наподобие HttpClient.

Мы обсуждаем сервер.

Ну это просто прекрасно. Значит у тебя есть приложение в котором есть UI и есть некая серверная часть.
Типа HttpServer. И всё это крутится в одном Windows-process.

Верно?
...
Рейтинг: 0 / 0
MSVC и GCC: совместимость кодировок исходников
    #39897350
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
petrav

Да можно то можно. Только я с трудом себе представляю как ты гарантируешь какой-нибудь StringMap (условное название) из Java что бы он на стеке был? Это даже для C++ странная задача.

Я говорю о стеке технологий. И на каждом уровне этого стека строка имеет место.
Где-то она - сырая. Порезанная в виде кусочков лежит тихо себе в буферах сокета.
Потом она - попадает на Handler Get запроса. Там она уже будет лежать в прикладной
кодировке. В соответствии с правилами HTTP протокола и твоего приложения. Тут
можно загибать пальцы потому-что транформация строки уже началась. Далее ты хочешь
с ней сделать еще одну транформацию. Нормализовать комбинации utf-8 символов.

Мой поинт в том чтобы сократить это количество фаз и свести их просто к алгоритму
который делает чуть больше действий. На память это особо не повлияет.
...
Рейтинг: 0 / 0
25 сообщений из 409, страница 16 из 17
Форумы / C++ [игнор отключен] [закрыт для гостей] / MSVC и GCC: совместимость кодировок исходников
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]