The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Размышление над проблемами формата Ogg"
Отправлено coder, 21-Мрт-10 11:15 
Быстрее уже не бывает...
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/time.h>
int main (void)
{
    const char *a = "Маша", *b = "мыла", *c = "раму!";
    const int count = 1e5;
    const int strlength = count * (strlen (a) + strlen (b) + strlen (c));
    char *string = (char*) malloc (strlength + 1);
    if (!string)
        return 1;
    char *ptrcur = string, *ptrstop = string + strlength;
    struct timeval begin, end;
    gettimeofday(&begin, NULL);
    while (ptrcur < ptrstop)
        ptrcur = stpcpy (stpcpy (stpcpy (ptrcur, a), b), c);
    gettimeofday(&end, NULL);
    long elapsed_ms = (end.tv_sec - begin.tv_sec) * 1000 + (end.tv_usec - begin.tv_usec) / 1000;
    printf ("Результат: %.50s за %ld мс.\n", string, elapsed_ms);
    free (string);
    return 0;
}
$ uname -p
Intel(R) Core(TM)2 Duo CPU P7350 @ 2.00GHz
$ gcc -O1 add.c && ./a.out
Результат: Машамылараму!Машамылараму! за 1 мс.
gcc -O0 add.c && ./a.out
Результат: Машамылараму!Машамылараму! за 6 мс.
При -O1 цикл компилируется в набор инструкций
        movabsq $-5705910293682414384, %rdi
        movabsq $-5705854223505048368, %rsi
        movabsq $-8948163380102790959, %rcx
.L5:    movq    %rdi, (%rax)
        movq    %rsi, 8(%rax)
        leaq    16(%rax), %rdx
        movq    %rcx, (%rdx)
        movw    $33, 8(%rdx)
        addq    $25, %rax
        cmpq    %rax, %rbx
        ja      .L5
Быстрее уже не бывает...
Отсюда вывод: чем ниже уровень ЯП, тем выше скорость программы при прочих равных условиях.
 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
  Введите код, изображенный на картинке: КОД
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру