Недавно я прочитал эту статью, в которой объясняется, как выборка процессора декодирует и выполняет инструкции с использованием циклов. Это заставило меня задуматься о том, как эти идеи применимы к производительности кода C++, особенно в сценариях, включающих использование ветвящегося кэша и многопоточность
я работал над этим фрагментом кода и заметил некоторые проблемы с производительностью на больших наборах данных, вот код
#include
#include
#include
#include
std::mutex mtx;
void complex_calculation(std::vector& data, int start, int end) {
for (int i = start; i < end; i++) {
if (data % 2 == 0) {
data = std::sqrt(data) + (data / 2) * 3;
} else {
data = std::pow(data, 3) - (data * 2) + 1;
}
if (data % 5 == 0) {
std::lock_guard lock(mtx);
data += 15;
}
}
}
int main() {
const int size = 1000000;
std::vector data(size, 1);
int num_threads = std::thread::hardware_concurrency();
std::vector threads;
int chunk_size = size / num_threads;
for (int t = 0; t < num_threads; t++) {
int start = t * chunk_size;
int end = (t == num_threads - 1) ? size : start + chunk_size;
threads.emplace_back(complex_calculation, std::ref(data), start, end);
}
for (auto& thread : threads) {
thread.join();
}
}
< /code>
Я задаюсь вопросом о нескольких вещах, и я бы очень ценил ваши отзывы или мысли < /p>
1 - Прогнозирование ветвления обрабатывает условия во внутреннем цикле эффективно или могут быть лучшие способы их написать? >
3 - использование Mutex, вероятно, создаст значительные узкие места для производительности при запуске по нескольким потокам? Повышение производительности этих расчетов? > Любой вход будет полезен
Подробнее здесь: https://stackoverflow.com/questions/793 ... on-mutex-u
Оптимизация кода C ++ для производительности: мультипотчики, прогноз филиала, использование Mutex и эффективность кэша ⇐ C++
Программы на C++. Форум разработчиков
1737873596
Anonymous
Недавно я прочитал эту статью, в которой объясняется, как выборка процессора декодирует и выполняет инструкции с использованием циклов. Это заставило меня задуматься о том, как эти идеи применимы к производительности кода C++, особенно в сценариях, включающих использование ветвящегося кэша и многопоточность
я работал над этим фрагментом кода и заметил некоторые проблемы с производительностью на больших наборах данных, вот код
#include
#include
#include
#include
std::mutex mtx;
void complex_calculation(std::vector& data, int start, int end) {
for (int i = start; i < end; i++) {
if (data[i] % 2 == 0) {
data[i] = std::sqrt(data[i]) + (data[i] / 2) * 3;
} else {
data[i] = std::pow(data[i], 3) - (data[i] * 2) + 1;
}
if (data[i] % 5 == 0) {
std::lock_guard lock(mtx);
data[i] += 15;
}
}
}
int main() {
const int size = 1000000;
std::vector data(size, 1);
int num_threads = std::thread::hardware_concurrency();
std::vector threads;
int chunk_size = size / num_threads;
for (int t = 0; t < num_threads; t++) {
int start = t * chunk_size;
int end = (t == num_threads - 1) ? size : start + chunk_size;
threads.emplace_back(complex_calculation, std::ref(data), start, end);
}
for (auto& thread : threads) {
thread.join();
}
}
< /code>
Я задаюсь вопросом о нескольких вещах, и я бы очень ценил ваши отзывы или мысли < /p>
1 - Прогнозирование ветвления обрабатывает условия во внутреннем цикле эффективно или могут быть лучшие способы их написать? >
3 - использование Mutex, вероятно, создаст значительные узкие места для производительности при запуске по нескольким потокам? Повышение производительности этих расчетов? > Любой вход будет полезен
Подробнее здесь: [url]https://stackoverflow.com/questions/79388094/optimizing-c-code-for-performance-multi-threading-branch-prediction-mutex-u[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия