1

У меня есть статическая библиотека, написанная на C, без динамического распределения памяти.Оценка объема памяти и использования ЦП для библиотеки C

До сих пор библиотека использовалась только в приложении для обычного i386 Linux, где процессора и памяти было много.

Теперь мне нужно попытаться создать версию библиотеки для встроенной системы ARM9 реального времени (предоставляется сторонней стороной). До этого я должен дать приблизительные оценки объема памяти и использования ЦП.

Что касается памяти, я создаю крошечное приложение на своей машине i386, статически связанное с моей библиотекой, которое выполняет все функции моей библиотеки. Правильно ли это, что проверка резидентной памяти этого приложения даст мне приблизительную оценку объема памяти моей библиотеки? Есть ли лучший способ измерить его?

Для оценки использования ЦП я затрудняюсь. Я могу, конечно, запустить тестовое приложение, упомянутое выше, в моей системе i386, но я не знаю, какие показатели дадут мне (если они есть), которые могут перевести что-то, относящееся к системе ARM. Есть ли способ сделать это?

+1

Скомпилировать и запустить его на RaspberryPi и, возможно, использовать gprof на нем? – wildplasser

+1

Raspberry Pi использует ARM11 и, без сомнения, другую архитектуру системы, память и т. Д. Если вы обнаружите, что это не хорошо на ARM11, то я полагаю, что это полезно, но в противном случае вы ничего не узнали о ARM9. – ams

+0

Просьба уточнить ваш вопрос. Вы говорите: «Что касается памяти, я создаю крошечное приложение на моей машине i386 ...» *, но вы строите ** для ** i386 или ARM9? – user694733

ответ

2

Оценка вашей оценки звучит неплохо для меня, до тех пор, пока вы скомпилировали ее для ARM9. На самом деле, если вы перекрестно скомпилируете библиотеку без информации об отладке, и вы ожидаете, что все функции библиотеки будут использоваться в конечном приложении, размер файла библиотеки будет довольно хорошей оценкой шара. Единственный способ, который не сработает, - это иметь много нулевых инициализированных глобальных (или статических) переменных. Разумеется, распределение памяти во время выполнения - это совсем другое дело, но вы уже учли это.

Оценка размера, основанная на коде x86, может находиться в пределах одного и того же шара-парка, но на самом деле не следует доверять. Размеры также могут варьироваться от компилятора к компилятору, поэтому постарайтесь сопоставить его, если сможете, но любой недавний компилятор ARM подходит для оценки приблизительной оценки.

Что касается оценок ЦП, невозможно измерить фигуру без ее измерения. Это функция архитектурной эффективности процессора, эффективность оптимизации компилятора, тактовая частота, скорость памяти, скорость шины, размер кеша, давление в кэше, вызванное другими запущенными задачами и т. Д. И т. Д. И т. Д. Слишком много переменных.

Одна вещь, которую вы, возможно, сможете сделать, это использовать примечание «большой О», чтобы сказать что-то о производительности алгоритмов на разных входах.

Я бы просто сказал «свет» или «тяжелый». Вероятно, у вас есть идея, какая из этих припадков.

+0

Вы говорите, что компиляция библиотеки на не-ARM-системе даст разумную оценку того, насколько большая библиотека находится в системе ARM? Это совсем не так: компиляция с двумя разными компиляторами для одной и той же архитектуры может дать 2 совершенно разных размера памяти. Это еще хуже, если сравнивать с двумя разными архитектурами. – user694733

+0

Нет, конечно, я этого не говорю. Это было бы абсурдно. Почему бы вам даже подумать об этом? – ams

+0

* «Для области памяти я создаю крошечное приложение на моей машине i386» * и * «Оценка вашей оценки звучит для меня очень хорошо». * – user694733