Возможно, используйте XAML, чтобы связать свойство видимости с моделью представления текстового контекста. Я сделал это со всеми видами вещей.
Я не уверен, что Вы подразумеваете под "C-инструкцией", возможно, оператор или строка? Конечно, это будет варьироваться значительно из-за многих факторов, но после рассмотрения нескольких моих собственных примеров программ, многие из них близко к метке 2-1 (2 инструкции по сборке на LOC), я не знаю то, что это означает или как это могло бы быть полезно.
Можно изобразить это сами для какой-то конкретной программы и комбинации реализации путем просьбы, чтобы компилятор генерировал только блок (gcc -S
например) или при помощи дизассемблера на уже скомпилированном исполняемом файле (но Вам был бы нужен исходный код для сравнения его с так или иначе).
Править
Только, чтобы подробно остановиться на этом на основе Вашего разъяснения того, что Вы пытаетесь выполнить (понимающий, сколько строк кода современный процессор может выполниться через секунду):
В то время как современный процессор может достигнуть 3 миллиардов циклов в секунду, который не означает, что может выполнить 3 миллиарда инструкций в секунду. Вот некоторые вещи рассмотреть:
Но в целом да, процессоры невероятно быстры и могут выполнить удивительные вещи в короткий промежуток времени.
Никто не отвечает возможный. операторы как int a;
мог бы потребовать нуля asm строки. в то время как операторы как a = call_is_inlined();
мог бы потребовать 20 + asm строки.
Вы видите себя путем компиляции c программы и затем запуска objdump -Sd ./a.out
. Это отобразит asm и смешанный код C, таким образом, Вы будете видеть, сколько asm строк сгенерировано для одной строки C. Пример:
test.c
int get_int(int c);
int main(void) {
int a = 1, b = 2;
return getCode(a) + b;
}
$ gcc -c -g test.c
$ objdump -Sd ./test.o
00000000 <main>:
int get_int(int c);
int main(void) { /* here, the prologue creates the frame for main */
0: 8d 4c 24 04 lea 0x4(%esp),%ecx
4: 83 e4 f0 and $0xfffffff0,%esp
7: ff 71 fc pushl -0x4(%ecx)
a: 55 push %ebp
b: 89 e5 mov %esp,%ebp
d: 51 push %ecx
e: 83 ec 14 sub $0x14,%esp
int a = 1, b = 2; /* setting up space for locals */
11: c7 45 f4 01 00 00 00 movl $0x1,-0xc(%ebp)
18: c7 45 f8 02 00 00 00 movl $0x2,-0x8(%ebp)
return getCode(a) + b;
1f: 8b 45 f4 mov -0xc(%ebp),%eax
22: 89 04 24 mov %eax,(%esp)
25: e8 fc ff ff ff call 26 <main+0x26>
2a: 03 45 f8 add -0x8(%ebp),%eax
} /* the epilogue runs, returning to the previous frame */
2d: 83 c4 14 add $0x14,%esp
30: 59 pop %ecx
31: 5d pop %ebp
32: 8d 61 fc lea -0x4(%ecx),%esp
35: c3 ret
Я не уверен, что существует действительно полезный ответ на это. Наверняка необходимо будет выбрать архитектуру (как Вы предположили).
Что я сделал бы: Возьмите разумную измеренную программу C. Дайте gcc "-S" опцию и проверьтесь. Это генерирует ассемблерный исходный код, и можно вычислить отношение для той программы сами.
Это варьируется чрезвычайно! Я woudn't верят любому, если они пытались предложить грубое преобразование.
Операторы как i++;
может перевести в сингл INC AX
.
Операторы для вызовов функции, содержащих много параметров, могут быть десятками инструкций, поскольку стек является установкой для вызова.
Затем добавьте там компиляторную оптимизацию, которая соберет Ваш код способом, отличающимся, чем Вы записали этому таким образом устранение инструкций.
Также некоторые инструкции, выполненные лучше на границах машинного слова так NOP
s будет наперчен всюду по Вашему коду.
Я не думаю, что можно завершить что-либо полезное безотносительно о производительности реальных приложений от того, что Вы пытаетесь сделать здесь. Если 'не точный' не означает 'в нескольких порядках величины'.
Вы - просто путь, сверхобобщенный, и Вы отклоняете кэширование, и т.д., как будто это вторично, тогда как это может быть полностью доминирующим.
Если Ваше приложение будет достаточно крупно для отклонений к некоторым средним инструкциям на местоположение, то это также будет достаточно большим, чтобы иметь ввод-вывод или по крайней мере значительные проблемы доступа RAM к фактору в.
В зависимости от Вашей среды Вы могли использовать опцию Visual Studio: / ФАС
больше здесь
RISC или CISC? Что такое инструкция в C, так или иначе?
Который должен повторить вышеупомянутые точки, что Вы действительно понятия не имеете, пока Вы не становитесь очень конкретными относительно типа кода, Вы работаете с.
Вы могли бы попытаться рассмотреть академическую литературу относительно оптимизации блока и перекрестных помех интерференции аппаратных средств/программного обеспечения, которые произошли за прошлые 30-40 лет. Это - то, куда Вы собираетесь найти некоторые реальные данные о том, чем Вы интересуетесь. (Хотя я предупреждаю Вас, Вы могли бы волновать наблюдение C-> данные PDP вместо C-> данные IA-32).