875 / 461 / 91
Регистрация: 10.06.2014
Сообщений: 2,669
|
|
1 | |
Причины снижения скорости при переходе с 32 битной системы на 6422.07.2018, 02:16. Показов 1134. Ответов 12
Метки нет (Все метки)
Наблюдается падение скорости почти в два раза.
Какие могут быть причины снижения скорости при переходе на х64? Первое что приходит в голову - это то что кэш процессора забивается метаинформацией которая состоит из указателей в куче (размер указателей ведь увеличивается на х64) соответственно при доступе к самим данным должно быть больше промахов по кэшу. Какие ещё есть варианты? Пробовал протестировать кэш мисы через performance profiler в студии, но репорт мне генерировать отказались...) Хочу добавить что метаинформация в памяти расположена вплотную с данными и таких блоков идущих друг за другом много
0
|
22.07.2018, 02:16 | |
Ответы с готовыми решениями:
12
Ошибка при переходе с 32-битной на 64-битную систему Компиляция и сборка из 64-битной системы для 32-битной системы Увеличение скорости при переходе с 3G на 4G Измерение скорости снижения напряжения |
0 / 33 / 5
Регистрация: 01.12.2017
Сообщений: 707
|
|
22.07.2018, 08:39 | 2 |
Undisputed, это у Вас всегда или при определённом коде?
0
|
2376 / 834 / 317
Регистрация: 10.02.2018
Сообщений: 1,968
|
|
22.07.2018, 09:38 | 3 |
Undisputed, не корректно утверждать, что любая 64х битная программа работает медленнее или быстрее своей 32х битной версии. Можно говорить лишь о каком-то конкретном фрагменте кода. Я бы сперва с помощью замеров времени выполнения локализовал подозрительные участки, а затем бы уже думал о причинах и возможностях исправления. Возможно, вы перешли на 64х битную версию по причине значительного увеличения объема обрабатываемых данных. Увеличение объема данных, в свою очередь, привело к нелинейному увеличению времени выполнения какого-то функционала.
1
|
22.07.2018, 10:02 | 4 |
О чем может идти речь, если вы ни строчки кода не привели.
Как напишите, так и будет работать. Если вы всю жизнь писали под х32, то естественно этот код будет тупить в 64 битной среде и его нужно оптимизировать под х64.
0
|
875 / 461 / 91
Регистрация: 10.06.2014
Сообщений: 2,669
|
|
22.07.2018, 10:40 [ТС] | 5 |
Sasha38,
В определённом коде. Ygg, А я не утверждал что любая программа... Весь функционал это просто обращение к данным, которые хранятся описанным мною способом... отсюда и соответствующие мысли... _lunar_, То что как написано так и работает - понятно, меня просто интересовало то что может есть какие то общие принципы перехода с 32 на 64, которые я не учёл. Если выложить код - придётся многое обьяснить что зачем и почему, поэтому к вопросу я подошёл абстрактно, предоставив при этом общую картину хранения данных...
0
|
2376 / 834 / 317
Регистрация: 10.02.2018
Сообщений: 1,968
|
|
22.07.2018, 10:52 | 6 |
По-моему, в два раза - это слишком много. Или вы не совсем корректно сравниваете, или код какой-то очень специфичный. По хорошему нужно сравнивать работу релизов со схожими опциями компиляции и с общим набором входных данных.
0
|
22.07.2018, 11:38 | 7 |
без кода сложно что-то вам подсказать.
ну к примеру: скорее всего вы используете в коде такие типы как int (unsigned int). Использование в качестве индекса типа int, размерность которого отличается от размерности указателя, приводит к тому, что в двоичном коде будут присутствовать дополнительные команды преобразования данных (в 64-битном коде размер указателей стал равен 64-битам, а размер типа int остался 32-битным). Поэтому в х64 лучше использовать memsize типы, например size_t. Скомпилируйте одинаковый код с типами int и size_t, и сравните ассемблерный мнемокод. если у вас в коде происходят векторные вычисления, то здесь можно использовать intrinsic функции (чтобы явно задействовать 128 битные инструкции), и принудительно выравнивайте их на 16 байт __declspec(align(16)).
2
|
875 / 461 / 91
Регистрация: 10.06.2014
Сообщений: 2,669
|
|
22.07.2018, 11:42 [ТС] | 8 |
Ygg,
Все именно так и делается) Добавлено через 3 минуты _lunar_, Использую size_t. В общем думаю нужен хороший профилировщик Думал может есть основные принципы перехода поэтому спросил Тогда не будем гадать ) Добавлено через 15 секунд Спасибо за участие
0
|
0 / 33 / 5
Регистрация: 01.12.2017
Сообщений: 707
|
|
22.07.2018, 12:02 | 9 |
Undisputed, код покажите, мы не экстрасенсы.
0
|
2376 / 834 / 317
Регистрация: 10.02.2018
Сообщений: 1,968
|
|
22.07.2018, 12:38 | 10 |
QueryPerformanceCounter в нужном месте - вполне достаточное средство.
А из граблей, на которые лично наступал пожалуй вспоминается только два явных случая: 1) дефолтное выравнивание данных в структурах, 2) подключение различных библиотек для разных платформ. Оба этих случая могут приводить к неожиданным последствиям.
0
|
875 / 461 / 91
Регистрация: 10.06.2014
Сообщений: 2,669
|
|
22.07.2018, 13:09 [ТС] | 11 |
То есть? Чем дефолтное выравнивание данных в структурах может снизить производительность? Оно ж наоборот, для ускорения.
0
|
2376 / 834 / 317
Регистрация: 10.02.2018
Сообщений: 1,968
|
|
22.07.2018, 13:49 | 12 |
Я говорил не о снижении производительности. Вообще, никогда не сталкивался со значительным снижением производительности при переходе на 64 бита. Ошибки из-за выравнивания, в отличие от некоторых других, не выявляются при переходе от 32 к 64 на момент компиляции, а проявляются уже при работе программы. Например, если есть сохранение в файл или передача по сети, то изменение структуры приводит к несовместимости 32х битных и 64х битных приложений в связке. Изменение размеров структур может привести к тому, что структуры перестанут помещаться куда-либо, куда они успешно помещались при 32х битах. Без понятия, каким ещё боком это может вылезти и повлиять на скорость работы, но иногда оно вылазит.
0
|
875 / 461 / 91
Регистрация: 10.06.2014
Сообщений: 2,669
|
|
22.07.2018, 13:58 [ТС] | 13 |
Не, с выравниванием у меня все ок. Я думаю проблемы могут возникнуть в том что в кэше просто будет меньше места если данные в основном такого типа который увеличивается при переходе на x64 версию программы.
0
|
22.07.2018, 13:58 | |
22.07.2018, 13:58 | |
Помогаю со студенческими работами здесь
13
Непонятна причина снижения скорости беспроводного соединения Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |