Kas C / C ++ pesa ahelate jaoks on olemas kiiruse erinevus, kas samal ajal, samal ajal, samal ajal ja samal ajal?


Vastus 1:
int
peamine (int argc, char * argv [])
{
   int i, g = 0xf;

   jaoks (i = 0; i <16; i ++)
     g--;
}
int
peamine (int argc, char * argv [])
{
   int i = 0, g = 0xf;

   tee {
      g--;
      i ++;
   } kuigi (i <16);
}
int
peamine (int argc, char * argv [])
{
   int i = 0, g = 0xf;

   samas (i <16) {
      g--;
      i ++;
   };
}
        .fail "main_for.c"
        .tekst
        .globl peamine
        .tüüp peamine, @funktsioon
peamine:
.LFB0:
        .cfi_startproc
        pushq% rbp
        .cfi_def_cfa_offset 16
        .cfi_offset 6, -16
        movq% rsp,% rbp
        .cfi_def_cfa_register 6
        movl% edi, -20 (% rbp)
        movq% rsi, -32 (% rbp) <--- Kõik sellest ülalpool on programminit
        movl 15 dollarit, -8 (% rbp) <- meie muutuja g
        movl $ 0, -4 (% rbp) <- Meie muutuja i
        jmp .L2
.L3:
        subl $ 1, -8 (% rbp) <--- vähenemine g
        addl $ 1, -4 (% rbp) <--- juurdekasv i
.L2:
        cmpl 15 dollarit, -4 (% rbp) <--- võrrelge i 15-ga
        jle .L3 <---- hüppa järgmise iteratsiooni juurde, kui see on väiksem või võrdne
        popq% rbp <----- Kõik selle all on programmi puhastamine
        .cfi_def_cfa 7, 8
        ret
        .cfi_endproc
.LFE0:
        .suure peamine,.-peamine
        .ident "GCC: (Gentoo 4.7.3-r1 p1.4, pirukas-0.5.5) 4.7.3"
        .sektsioon .note.GNU-stack, "", @ progbits
        movl $ 0, -4 (% rbp) <- Meie muutuja i
        movl 15 dollarit, -8 (% rbp) <- meie muutuja g
        jmp .L2
.L3:
        subl $ 1, -8 (% rbp) <--- vähenemine g
        addl $ 1, -4 (% rbp) <--- juurdekasv i
.L2:
        cmpl 15 dollarit, -4 (% rbp) <--- võrrelge i 15-ga
        jle .L3 <---- hüppa järgmise iteratsiooni juurde, kui see on väiksem või võrdne
        movl 0 dollarit, -4 (% rbp)
        movl 15 dollarit, -8 (% rbp)
.L2:
        subl $ 1, -8 (% rbp)
        addl $ 1, -4 (% rbp)
        cmpl 15 dollarit, -4 (% rbp)
        jle .L2
       .fail "main_for.c"
        .sektsioon .text.startup, "ax", @ progbits
        .p2joon 4,, 15
        .globl peamine
        .tüüp peamine, @funktsioon
peamine:
.LFB0:
        .cfi_startproc
        rep
        ret
        .cfi_endproc
.LFE0:
        .suure peamine,.-peamine
        .ident "GCC: (Gentoo 4.7.3-r1 p1.4, pirukas-0.5.5) 4.7.3"
        .sektsioon .note.GNU-stack, "", @ progbits
peamine:
.LFB0:
        .cfi_startproc
        movl 15 dollarit, -4 (% rsp) <----- arvutatud lõpptingimus i (cecI)
        movl $ 16,% eax <------- Meie muutuja g on registris
        .p2joon 4,, 10
        .p2valik 3
.L2:
        movl -4 (% rsp),% edx <---- teisalda cecI registrisse
        subl $ 1,% edx <--- vähendamine cecI
        subl $ 1,% eax <--- vähendamine g registreerimisel
        movl% edx, -4 (% rsp) <- teisalda register cecI
        jne .L2
        rep
        ret
.LFB0:
        .cfi_startproc
        movl 15 dollarit, -4 (% rsp)
        movl 16 dollarit, eax%
        .p2joon 4,, 10
        .p2valik 3
.L2:
        movl -4 (% rsp),% edx
        subl $ 1,% edx
        subl $ 1,% eax
        movl% edx, -4 (% rsp)
        jne .L2
int
peamine (int argc, char * argv [])
{
   int x, y;
   lenduv g = 0xf;

   jaoks (y = 0; y <16; y ++) {
      jaoks (x = 0; x <10; x ++) {
         g--;
      }
   }
}
int
peamine (int argc, char * argv [])
{
   int x, y = 0;
   lenduv int g = 0xf;

   jaoks (y = 0; y <16; y ++, x = 0) {
      samas (x ++ <10) {
         g--;
      }
   }
}
peamine:
.LFB0:
        .cfi_startproc
        movl 15 dollarit, -4 (% rsp)
        movl 16 dollarit,% ecx
        .p2joon 4,, 10
        .p2valik 3
.L2:
        movl 10 dollarit, eax%
        .p2joon 4,, 10
        .p2valik 3
.L3:
        movl -4 (% rsp),% edx
        subl $ 1,% edx
        subl $ 1,% eax
        movl% edx, -4 (% rsp)
        jne .L3
        subl $ 1,% ecx
        jne .L2