Я новичок в переполнении стека и надеюсь получить некоторые советы о том, как подойти к проблеме, которую я испытываю. Имея небольшой опыт сборки, я испытываю трудные времена, рассуждая о характеристиках производительности за штуку кода, который у меня есть. Код написан на C на архитектуре PowerPC (старый Apple G5). Запустив код с помощью O3 и некоторой другой оптимизации, код на самом деле работает примерно на 30% медленнее, чем с O3. Разница между кодом сборки сводится к нескольким инструкциям (например, 3-4) и их расположению.Анализ производительности ассемблерного кода
Моя проблема связана с моей неопытной работой. У меня возникли трудности с пониманием того, почему производительность сборки хуже работает на корпусе и лучше в другом. Инструменты, такие как oprofile, здесь не очень полезны, и, глядя на официальную учебную инструкцию IBM, нет никакой информации (по крайней мере, о том, что я видел, по крайней мере, по крайней мере), о характеристиках производительности perticular. Как можно подойти к таким проблемам анализа? Как уже упоминалось, у меня мало опыта в анализе сборки и трубопровода, и поэтому я был бы признателен за любые предложения о том, как обычно подходят такие проблемы. Есть ли инструменты, которые могут мне помочь?
Кроме того, меня не очень интересует, почему компилятор сгенерировал код так, как он сделал (и в некотором смысле мне неинтересно, как работает исходный код C), меня действительно интересует только понимание анализ производительности сборки.
Update
Я просто хочу, чтобы дать краткую справку о проблеме - с помощью тренажера PowerPC трубопровода от IBM можно было увидеть, что именно произошло в трубопроводе и, таким образом, стало намного легче понять проблема (это оказалось проблемой, связанной с заполнением очереди заявок и формированием групп отправки). Я предлагаю всем, кто ищет похожие проблемы, использовать симулятор конвейера, он поможет вам в понимании производительности вашей программы! Из-за сложности мощных машин, кажется, очень сложно проанализировать эксплуатационные характеристики программы без использования симулятора трубопровода. Это, вероятно, означает, что для того, чтобы действительно понять, как ваша программа влияет на производительность, необходимо понять архитектуру, в которой выполняется код.
Это большая тема и вопрос слишком широк для StackOverflow как это стенды - попробуйте выбрать небольшой конкретный пример, затем опубликуйте исходный код и код сборки и задайте очень конкретный вопрос. –
Я понимаю, что это большой и широкий предмет, но любые указания на все, что может помочь мне подойти к проблеме, приветствуются. Я попытаюсь добавить примерный код сборки завтра – YoungPadawan
Каковы инструкции, которые кажутся медленнее? – Dko