Инкримент или сложение?
От: sqborev  
Дата: 21.01.08 13:23
Оценка:
Добрый день, дорогие друзья...

У меня тут возник вопрос... Наверное больше даже из любопытства

Копировал тут из массива в массив элементы... и созрел вопрос... как будет работать быстрее?
Сначала приведу оба варианта упрощенных донельзя функций , а потом поясню


void F(char* buf_, int count_, int from_ = 0)
{
    for(int i=0; i<count_; i++)
    {
        buf[i] = buf_[i+from_];
    }
}


void F(char* buf_, int count_, int from_ = 0)
{
    for(int i=0; i<count_; i++, from_++)
    {
        buf[i] = buf_[from_];
    }
}


Две почти одинаковые функции по копированию из буфера в буфер... Забудем о всех возможных ошибках переполнения и прочих...
Как буд-то все правильно...
Так вот, что будет шустрее?

Мне вот почему-то кажется что первый вариант менее быстрый...
Если я не ошибаюсь, то в asm есть отдельная команда увеличения на единицу, в случае же сложения мы получим излишнее копирование в регистр...
или может я все позабыл или говорю что-то не так?
Может компилятор нам поможет и все будет работать одинаков?
Растолкуйте
С уважением. Евгений Sqborev
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.