LINUX.ORG.RU

История изменений

Исправление EXL, (текущая версия) :

что в любом проекте сложнее «hello world» компилятор тебя уделяет и по скорости написания, как и по скорости исполнения.

Кстати, на Hello World'е тоже может уделать, заменив вызов более медленной функции printf() на какой-нибудь быстрый puts():

$ cat hello.c 
#include <stdio.h>

int main(void) {
    printf("Hello, World!\n");
    return 0;
}
$ gcc -O3 -S hello.c
$ cat hello.s
        .file   "hello.c"
        .section        .rodata.str1.1,"aMS",@progbits,1
.LC0:
        .string "Hello, World!"
        .section        .text.startup,"ax",@progbits
        .p2align 4,,15
        .globl  main
        .type   main, @function
main:
.LFB11:
        .cfi_startproc
        leaq    .LC0(%rip), %rdi
        subq    $8, %rsp
        .cfi_def_cfa_offset 16
        call    puts@PLT        /* <================ */
        xorl    %eax, %eax
        addq    $8, %rsp
        .cfi_def_cfa_offset 8
        ret
        .cfi_endproc
.LFE11:
        .size   main, .-main
        .ident  "GCC: (GNU) 7.2.1 20171224"
        .section        .note.GNU-stack,"",@progbits

:D

Исправление EXL, :

что в любом проекте сложнее «hello world» компилятор тебя уделяет и по скорости написания, как и по скорости исполнения.

Кстати, на Hello World'е тоже может уделать, заменив вызов более медленной функции printf() на какой-нибудь быстрый puts():

$ cat hello.c 
#include <stdio.h>

int main(void) {
    printf("Hello, World!\n");
    return 0;
}
$ gcc -O3 -S hello.c
$ cat hello.s
        .file   "hello.c"
        .section        .rodata.str1.1,"aMS",@progbits,1
.LC0:
        .string "Hello, World!"
        .section        .text.startup,"ax",@progbits
        .p2align 4,,15
        .globl  main
        .type   main, @function
main:
.LFB11:
        .cfi_startproc
        leaq    .LC0(%rip), %rdi
        subq    $8, %rsp
        .cfi_def_cfa_offset 16
        call    puts@PLT
        xorl    %eax, %eax
        addq    $8, %rsp
        .cfi_def_cfa_offset 8
        ret
        .cfi_endproc
.LFE11:
        .size   main, .-main
        .ident  "GCC: (GNU) 7.2.1 20171224"
        .section        .note.GNU-stack,"",@progbits

:D

Исходная версия EXL, :

что в любом проекте сложнее «hello world» компилятор тебя уделяет и по скорости написания, как и по скорости исполнения.

Кстати, на Hello World'е тоже может уделать, заменив вызов более медленной функции printf() на какой-нибудь puts()

$ cat hello.c 
#include <stdio.h>

int main(void) {
    printf("Hello, World!\n");
    return 0;
}
$ gcc -O3 -S hello.c
$ cat hello.s
        .file   "hello.c"
        .section        .rodata.str1.1,"aMS",@progbits,1
.LC0:
        .string "Hello, World!"
        .section        .text.startup,"ax",@progbits
        .p2align 4,,15
        .globl  main
        .type   main, @function
main:
.LFB11:
        .cfi_startproc
        leaq    .LC0(%rip), %rdi
        subq    $8, %rsp
        .cfi_def_cfa_offset 16
        call    puts@PLT
        xorl    %eax, %eax
        addq    $8, %rsp
        .cfi_def_cfa_offset 8
        ret
        .cfi_endproc
.LFE11:
        .size   main, .-main
        .ident  "GCC: (GNU) 7.2.1 20171224"
        .section        .note.GNU-stack,"",@progbits

:D