powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / VS2012: Как посмотреть реализацию функции sin(x)?
25 сообщений из 68, страница 2 из 3
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093266
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanV,

Writing Secure Code неплохая книга.

GermanVЯ вот в кучах создаю огромные массивы и боюсь переполнений (эти ошибки очень трудно отследить). Может создать какие-то дополнительные проверочные процедуры анализа стека на входе/выходе из функций кода и тд.
Не вижу связи между ошибками в работе с кучей и проверкой стека. Атаки направленные на кучу (heap corruption, например) не затрагивают стек. Атаки на стек (buffer overrun, например) в свою очередь не затрагивают кучу. Соответственно защита нужная разная. Конкретно защиту массивов в куче делаем путем проверок размеров и индексов чтобы не выходить за их пределы. Компилятор и c-runtime в VS 2012 уже реализуют ряд механизмов защиты программы. Смотри, например, опции компиляции "Basic Runtime Checks" и "Security Check" (C/C++ \ Code Generation).
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093272
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVИзопропилпеределке подлежат функции, использующие общие данные процесса.

Можно подробнее? Вводится ли новая функция или заменяется старая? Как это отражается на производительности? Какой-нибудь пример есть?
Заменяются не отдельные функции, а просто проект собирается с другими ключами и другой библиотекой (где все те же функции написаны с учетом многопоточности).

Многопоточность стандартной библиотеки, по сравнению с однопоточными вариантами заключается лишь в том, что создание/удаление из нескольких потоков в куче безопасно, и там где стандартные функции использовали глобальные переменные для хранения состояния (rand, strtok...) теперь для этого используются переменные размещенные в TLS(thread local storage), т.е. своя копия у каждого потока, и соответственно потоки не влияют друг на друга, хотя состояние у функций по-прежнему есть.

Естественно что доступ к TLS вносит накладные расходы. А в зависимости от криворукости разработчиков библиотеки производительность может упасть в разы. Но часто никакого выбора нет.
Во всех современных компиляторах под win/lin используются многопоточные версии стандартных библиотек. В некоторых можно переключаться между одно- и многопоточными. Но например в VS2008 уже нет однопоточной стандартной библиотеки С/С++.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093300
GermanV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
[quot bazile]GermanV,

Writing Secure Code неплохая книга.

Спасибо.

bazileНе вижу связи между ошибками в работе с кучей и проверкой стека. Атаки направленные на кучу (heap corruption, например) не затрагивают стек. Атаки на стек (buffer overrun, например) в свою очередь не затрагивают кучу. Соответственно защита нужная разная. Конкретно защиту массивов в куче делаем путем проверок размеров и индексов чтобы не выходить за их пределы. Компилятор и c-runtime в VS 2012 уже реализуют ряд механизмов защиты программы. Смотри, например, опции компиляции "Basic Runtime Checks" и "Security Check" (C/C++ \ Code Generation).

Я просто написал все вместе, чтобы было понятно общее направление поиска: корректная работа кода / отлавливание ошибок, которые не ловит компилятор и сборщик.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093319
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVЯ просто написал все вместе, чтобы было понятно общее направление поиска: корректная работа кода / отлавливание ошибок, которые не ловит компилятор и сборщик.
Есть одна стратегия для минимизации таких ошибок (особенно у новичков без опыта) - не использовать низкоуровневые инструменты, там где доступны высокоуровневые.
Язык С++ дает достаточно возможностей для этого.
Векторы вместо массивов, смарт-указатели вместо голых указателей и т.д.
На 99% программ это никак не скажется на производительности.
А оставшийся 1% - сначала отладить, а потом профайлером выявить узкие места и оптимизировать их.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093320
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVчтобы было понятно общее направление поиска: корректная работа кода /
отлавливание ошибок, которые не ловит компилятор и сборщик.
Это приходит с опытом само. Как в RPG: чем больше багов поймал и убил, тем выше твой уровень.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093348
GermanV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly MoskovskyМногопоточность стандартной библиотеки, по сравнению с однопоточными вариантами заключается лишь в том, что создание/удаление из нескольких потоков в куче безопасно, и там где стандартные функции использовали глобальные переменные для хранения состояния (rand, strtok...) теперь для этого используются переменные размещенные в TLS(thread local storage), т.е. своя копия у каждого потока, и соответственно потоки не влияют друг на друга, хотя состояние у функций по-прежнему есть.

Естественно что доступ к TLS вносит накладные расходы. А в зависимости от криворукости разработчиков библиотеки производительность может упасть в разы. Но часто никакого выбора нет.
Во всех современных компиляторах под win/lin используются многопоточные версии стандартных библиотек. В некоторых можно переключаться между одно- и многопоточными. Но например в VS2008 уже нет однопоточной стандартной библиотеки С/С++.

А свободно распространяемые однопоточные библиотеки есть? Ведь я могу подцепить любую библиотеку и использовать ее функции вместо поставляемых со средой. Хочется повысить производительность.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093362
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVВедь я могу подцепить любую библиотеку и использовать ее функции вместо
поставляемых со средой.
Не можешь. И производительность этим ты повысишь на пару процентов и то только если
повезёт. Анализ и оптимизация алгоритма может дать ускорение в разы.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093373
GermanV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly MoskovskyЕсть одна стратегия для минимизации таких ошибок (особенно у новичков без опыта) - не использовать низкоуровневые инструменты, там где доступны высокоуровневые.
Язык С++ дает достаточно возможностей для этого.
Векторы вместо массивов, смарт-указатели вместо голых указателей и т.д.
На 99% программ это никак не скажется на производительности.
А оставшийся 1% - сначала отладить, а потом профайлером выявить узкие места и оптимизировать их.

У меня как раз задача с расчетами на несколько суток (а может и недель). Так что STL с его серьезным падением производительности явно не подходит.

Да и я спрашиваю не столько про мелкие хитрушки, сколько про структуру программы. Возможно это будет дополнительная обертка вызовов функций или какая-то сигнальная система глобальных переменных, разбиение на отдельные модули.... Не знаю, пока. И хочу узнать.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093380
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVА свободно распространяемые однопоточные библиотеки есть? Ведь я могу подцепить любую библиотеку и использовать ее функции вместо поставляемых со средой. Хочется повысить производительность.
Я надеюсь вы не собрались использовать однопоточный рантайм в многопоточной программе?
Это возможно только для однопоточных программ.

Вообще, на современных процах несколько ядер. Вам надо наоборот увеличивать число потоков, а не делать однопоточной программу :)
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093389
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVТак что STL с его серьезным падением производительности явно не подходит
А пример можно? Чтобы было что обсудить на конкретном решении.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093391
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyВам надо наоборот увеличивать число потоков, а не делать однопоточной программу :)
А он несколько программ запустит, каждой по своему куску данных ))
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093406
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVУ меня как раз задача с расчетами на несколько суток (а может и недель). Так что STL с его серьезным падением производительности явно не подходит.

STL никак не мешает писать максимально быстрые программы.
Тормозит не STL, а алгоритм.
Например выделение вектора размером с несколько гигов ну пусть секунды займет в худшем случае.
А алгоритм ваш работает неделями.
Как это может сказаться на скорости алгоритма? Никак, если не выделять память на каждый чих.

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

Вы для начала прогоните профайлером и посмотрите что реально тормозит (и это на 99% будет ваш код, а не станд.библиотека).
А замена стандартных библиотек не поможет в любом случае.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093486
GermanV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly MoskovskySTL никак не мешает писать максимально быстрые программы.
Тормозит не STL, а алгоритм.
Например выделение вектора размером с несколько гигов ну пусть секунды займет в худшем случае.
А алгоритм ваш работает неделями.
Как это может сказаться на скорости алгоритма? Никак, если не выделять память на каждый чих.

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

Вы для начала прогоните профайлером и посмотрите что реально тормозит (и это на 99% будет ваш код, а не станд.библиотека).
А замена стандартных библиотек не поможет в любом случае.

А вы попробуйте этот вектор потом заполнить данными и поймете, что обычный массив работает примерно в 5-6 раз быстрее. И алгоритмы тут не при чем.

Дело в том, что разработчики STL делают проверки под каждый "чих", а я, например, исходя из структуры кода могу сделать проверку на выход за границы по завершении цикла. STL- в принципе мертвяк. Уж лучше тогда на C# начать писать. Производительность та же (даже наверное будет лучше), а защищенность выше.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093512
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVДело в том, что разработчики STL делают проверки под каждый "чих"
Пример покажете или нет?
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093551
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVА вы попробуйте этот вектор потом заполнить данными и поймете, что обычный массив работает примерно в 5-6 раз быстрее. И алгоритмы тут не при чем.
Anatoly MoskovskyДа и никто не мешает обращаться с тем же вектором как с массивом через указатель, а самому вектору оставить управление памятью.

GermanV,

читайте внимательно
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093575
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVУ меня как раз задача с расчетами на несколько суток (а может и недель). Так что STL с его серьезным падением производительности явно не подходит.

Да и я спрашиваю не столько про мелкие хитрушки, сколько про структуру программы. Возможно это будет дополнительная обертка вызовов функций или какая-то сигнальная система глобальных переменных, разбиение на отдельные модули.... Не знаю, пока. И хочу узнать.
GermanV, мон шер. В этом форуме собрались отпетые любители пооптимизировать С++ исходники.
Выкладывай самодостаточный кусок кода и мы посмотрим. Я тоже делаю ставку на то
что ты оптимизируешь не то и не там. Синус не является узким местом в расчётах.
Он на 99% хардварный. А вот твой алгоритм - это другое дело. Если это численный
метод то в нём всегда есть место для компромиссов. По точности там... по методу.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093602
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVAnatoly MoskovskySTL никак не мешает писать максимально быстрые программы.
...А вы попробуйте этот вектор потом заполнить данными и поймете, что обычный массив работает примерно в 5-6 раз быстрее. И алгоритмы тут не при чем.

Дело в том, что разработчики STL делают проверки под каждый "чих", а я, например, исходя из структуры кода могу сделать проверку на выход за границы по завершении цикла. STL- в принципе мертвяк. Уж лучше тогда на C# начать писать. Производительность та же (даже наверное будет лучше), а защищенность выше. Можно пример кода, с замерами желательно? Или из пальца высосали?
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093622
GermanV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sherzod_[Можно пример кода, с замерами желательно? Или из пальца высосали?

Это уже 100 раз обсуждалось на этом форуме с кучей реальных примеров. Я не собираюсь повторяться.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093626
GermanV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ИзопропилAnatoly MoskovskyДа и никто не мешает обращаться с тем же вектором как с массивом через указатель, а самому вектору оставить управление памятью.

GermanV,

читайте внимательно

Тогда в чем смысл? Ведь беда не столько в выделениях памяти, сколько в "писании" по невыделенным участкам.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093630
Edd.Dragon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVЭто уже 100 раз обсуждалось на этом форуме с кучей реальных примеров. Я не собираюсь повторяться.
Еще дальше отфутболили )))

Все понятно
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093635
GermanV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonGermanV, мон шер. В этом форуме собрались отпетые любители пооптимизировать С++ исходники.
Выкладывай самодостаточный кусок кода и мы посмотрим. Я тоже делаю ставку на то
что ты оптимизируешь не то и не там. Синус не является узким местом в расчётах.
Он на 99% хардварный. А вот твой алгоритм - это другое дело. Если это численный
метод то в нём всегда есть место для компромиссов. По точности там... по методу.

Господи, опять к синусу прицепились. Ну почему не беседовать по сути вопроса, не отвлекаясь на мелкие недочеты, свойственные людям в живой беседе?
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093645
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVГосподи, опять к синусу прицепились.
А нефиг было его выносить в стартовый пост.

Повторяю ещё раз, медленно: даже вынос инвариантов за цикл ускоряет алгоритм больше чем
самая оптимизированная библиотека. Не говоря уже о раннем отсечении тупиковых ветвей.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093652
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVГосподи, опять к синусу прицепились. Ну почниему не беседовать по сути вопроса, не отвлекаясь на мелкие недочеты, свойственные людям в живой беседе?
Извини. А где суть вопроса? Накладные на STL ?
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093654
sherzod_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GermanVsherzod_[Можно пример кода, с замерами желательно? Или из пальца высосали?
Это уже 100 раз обсуждалось на этом форуме с кучей реальных примеров. Я не собираюсь повторяться. Так и надо говорить: "Я мало что понимаю, но буду нести безосновательную чушь и троллить про stl и linux". Если я ошибаюсь, приведите пример кода и мы посмеемся.
...
Рейтинг: 0 / 0
VS2012: Как посмотреть реализацию функции sin(x)?
    #38093656
GermanV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Edd.DragonЕще дальше отфутболили )))

Все понятно

Ну, например, здесь: /topic/945804&pg=2&hl=stl
...
Рейтинг: 0 / 0
25 сообщений из 68, страница 2 из 3
Форумы / C++ [игнор отключен] [закрыт для гостей] / VS2012: Как посмотреть реализацию функции sin(x)?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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