Собственно, subj. Функции View* возвращают указатель на static char *, по сути все три делают double2string преобразование, просто по-разному (некоторые округляют, некоторые добавляют k/M в конце числа). Опции сборки: -O4 -march=i486 -fomit-frame-pointer -std=c99 -lm
char *(* MYview)(double ivalue);
int main(void) {
int i, x = 3;
if (x == 1) MYView = View1;
else if (x == 2) MYView = View2;
else if (x == 3) MYView = View3;
for (i = 0; i < 1000000; i++) fprintf(stdout, "%s\n", MyView(47653423.0));
return 0;
}
Код выше тормознее, чем приведенный ниже на 20% (согласно поля real команды time: 3.300 для кода выше > 2.700 для кода ниже):
int main(void) {
int i, x = 3;
for (i = 0; i < 1000000; i++) {
if (x == 1) fprintf(stdout, "%s\n", View1(47653423.0));
else if (x == 2) fprintf(stdout, "%s\n", View2(47653423.0));
else if (x == 3) fprintf(stdout, "%s\n", View3(47653423.0));
return 0;
}
И если это нормально, тогда может кто то пояснит в каких случаях указатели на функции эффективны?
Ответ на:
комментарий
от saper
Ответ на:
комментарий
от dilmah
Ответ на:
комментарий
от dilmah
Ответ на:
комментарий
от saper
Ответ на:
комментарий
от saper
Ответ на:
комментарий
от dilmah
Ответ на:
комментарий
от saper
Ответ на:
комментарий
от dilmah
Ответ на:
комментарий
от saper
Ответ на:
комментарий
от MKuznetsov
Ответ на:
комментарий
от MKuznetsov
Ответ на:
комментарий
от saper

Ответ на:
комментарий
от saper
Ответ на:
комментарий
от MKuznetsov
Ответ на:
комментарий
от MKuznetsov
Ответ на:
комментарий
от MKuznetsov
Ответ на:
комментарий
от saper

Ответ на:
комментарий
от saper
Ответ на:
комментарий
от MKuznetsov
Ответ на:
комментарий
от saper
Ответ на:
комментарий
от MKuznetsov
Ответ на:
комментарий
от saper
Ответ на:
комментарий
от execve
Ответ на:
комментарий
от saper

Ответ на:
комментарий
от cobold
Ответ на:
комментарий
от saper
Ответ на:
комментарий
от MKuznetsov
Ответ на:
комментарий
от saper
Ответ на:
комментарий
от MKuznetsov
Ответ на:
комментарий
от MKuznetsov
Ответ на:
комментарий
от saper
Ответ на:
комментарий
от saper
Ответ на:
комментарий
от saper
Ответ на:
комментарий
от MKuznetsov
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от anonymous
Ответ на:
комментарий
от MKuznetsov
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.