Является ли встроенный язык ассемблера медленнее, чем нативный код C ++?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Является ли встроенный язык ассемблера медленнее, чем нативный код C ++?

Сообщение Anonymous »

Я попытался сравнить производительность встроенного языка сборки и кода C ++, поэтому я написал функцию, которая добавляла два массива размера 2000 в 100000 раз. Вот код: < /p>

#define TIMES 100000
void calcuC(int *x,int *y,int length)
{
for(int i = 0; i < TIMES; i++)
{
for(int j = 0; j < length; j++)
x[j] += y[j];
}
}

void calcuAsm(int *x,int *y,int lengthOfArray)
{
__asm
{
mov edi,TIMES
start:
mov esi,0
mov ecx,lengthOfArray
label:
mov edx,x
push edx
mov eax,DWORD PTR [edx + esi*4]
mov edx,y
mov ebx,DWORD PTR [edx + esi*4]
add eax,ebx
pop edx
mov [edx + esi*4],eax
inc esi
loop label
dec edi
cmp edi,0
jnz start
};
}
< /code>

вот main () < /code>: < /p>

int main() {
bool errorOccured = false;
setbuf(stdout,NULL);
int *xC,*xAsm,*yC,*yAsm;
xC = new int[2000];
xAsm = new int[2000];
yC = new int[2000];
yAsm = new int[2000];
for(int i = 0; i < 2000; i++)
{
xC = 0;
xAsm = 0;
yC = i;
yAsm = i;
}
time_t start = clock();
calcuC(xC,yC,2000);

// calcuAsm(xAsm,yAsm,2000);
// for(int i = 0; i < 2000; i++)
// {
// if(xC != xAsm)
// {
// cout

Подробнее здесь: https://stackoverflow.com/questions/960 ... ive-c-code
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»