The OpenNET Project / Index page

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



Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Режим отображения отдельной подветви беседы [ Отслеживать ]

Оглавление

Вышел компилятор языка D 2.076, opennews (??), 02-Сен-17, (0) [смотреть все]

Сообщения [Сортировка по времени | RSS]


4. "Вышел компилятор языка D 2.076"  +/
Сообщение от Lester (?), 02-Сен-17, 20:28 
Код для С явно калька с кода на D, сишник написал бы по другому.
Ответить | Правка | Наверх | Cообщить модератору

7. "Вышел компилятор языка D 2.076"  +2 +/
Сообщение от Аноним (-), 02-Сен-17, 20:39 
Валяй свой вариант
Ответить | Правка | Наверх | Cообщить модератору

17. "Вышел компилятор языка D 2.076"  +/
Сообщение от Аноним (-), 02-Сен-17, 23:13 
Предыдущий коммент не мой, но...

#include <stdbool.h>
#include <stdio.h>

#define size 8190

int main() {
        int count;

        puts("10 iterations");
        for (int iter = 10; iter > 0; iter--) {
                count = 0;
                bool flags[size] = { [0 ... size-1] = true };
                for (int i = 0; i < size; i++) {
                        if (flags[i]) {
                                int prime = 2 * i + 3;
                                int k = i + prime;
                                for (; k < size; k += prime) {
                                        flags[k] = false;
                                }
                                count++;
                        }
                }
        }
        printf ("\n%d primes\n", count);
        return 0;
}

Да, это C99.

Ответить | Правка | Наверх | Cообщить модератору

36. "Вышел компилятор языка D 2.076"  +/
Сообщение от Orduemail (ok), 03-Сен-17, 13:41 
- #define size 8190
+ #define size 8191

Там в исходном примере явно кто-то пытался запутать читателя и использовал size не в смысле "количество элементов", а в смысле "самый большой индекс".

Ответить | Правка | Наверх | Cообщить модератору

47. "Вышел компилятор языка D 2.076"  +/
Сообщение от Аноним (-), 03-Сен-17, 23:16 
Да.
Ответить | Правка | Наверх | Cообщить модератору

39. "Вышел компилятор языка D 2.076"  +2 +/
Сообщение от pripolzemail (?), 03-Сен-17, 16:28 
> [0 ... size-1]

может быть gnu99 ?

Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

46. "Вышел компилятор языка D 2.076"  +2 +/
Сообщение от Аноним (-), 03-Сен-17, 23:01 
#define SIZE 8190
Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

55. "Вышел компилятор языка D 2.076"  +/
Сообщение от freehckemail (ok), 04-Сен-17, 16:48 
А чем так принципиально было важно для "настоящего сишника" заменить i + i на 2 * i, и почему не i << 1?
Ответить | Правка | К родителю #17 | Наверх | Cообщить модератору

58. "Вышел компилятор языка D 2.076"  –1 +/
Сообщение от Аноним (-), 04-Сен-17, 18:16 
Да пофиг. Ну почти пофиг, потому что с отключёнными оптимизациями 2*i может сэкономить такт.
Ответить | Правка | Наверх | Cообщить модератору

61. "Вышел компилятор языка D 2.076"  +1 +/
Сообщение от Аноним84701 (ok), 04-Сен-17, 18:34 
> Да пофиг. Ну почти пофиг, потому что с отключёнными оптимизациями 2*i может сэкономить такт.

Это на какой платформе IMUL шустрее простого ADD?  o_O

Ответить | Правка | Наверх | Cообщить модератору

69. "Вышел компилятор языка D 2.076"  –1 +/
Сообщение от труляляй (?), 05-Сен-17, 09:11 
Если умножение целого на 2, то компилятор автоматом преобразовывает в shl
Ответить | Правка | К родителю #58 | Наверх | Cообщить модератору

71. "Вышел компилятор языка D 2.076"  +2 +/
Сообщение от Аноним84701 (ok), 05-Сен-17, 15:52 
> Если умножение целого на 2, то компилятор автоматом преобразовывает в shl

Сильно зависит от контекста (кроме платформы, само-собой) ;)


% echo "int test(int x) {return x*2;}"|gcc -S -masm=intel -fverbose-asm -o- -xc -
    mov    DWORD PTR [rbp-4], edi    # x, x
    mov    eax, DWORD PTR [rbp-4]    # tmp89, x
    add    eax, eax    # D.1834
    pop    rbp    #
    .cfi_def_cfa 7, 8
    ret

% echo "int test(int x) {return x+x;}"|gcc -S -masm=intel -fverbose-asm -o- -xc -
    mov    DWORD PTR [rbp-4], edi    # x, x
    mov    eax, DWORD PTR [rbp-4]    # tmp89, x
    add    eax, eax    # D.1834, tmp89
    pop    rbp    #
    .cfi_def_cfa 7, 8
    ret

% echo "int test(int x) {return x*2;}"|gcc -O2 -S -masm=intel -fverbose-asm -o- -xc -
test:
.LFB0:
    .cfi_startproc
    lea    eax, [rdi+rdi]    # D.1837,
    ret
    .cfi_endproc
.LFE0:


Ответить | Правка | Наверх | Cообщить модератору

72. "Вышел компилятор языка D 2.076"  –1 +/
Сообщение от труляляй (?), 05-Сен-17, 16:26 
Конечно, зависит от того, на сколько всё может распараллелиться и прочих "мелочей". Ну и, как в примере, от ключа оптимизации. Даже и не спорю.
Ответить | Правка | Наверх | Cообщить модератору

9. "Вышел компилятор языка D 2.076"  +2 +/
Сообщение от Crazy Alex (ok), 02-Сен-17, 20:58 
Если для Obfuscated C Contest - то да. Если нормальный индустриальный код - то примерно так и пишут по возможности.

Другое дело, что они зачем-то на C89 пример привели, но он не особо много меняет.

Ответить | Правка | К родителю #4 | Наверх | Cообщить модератору

18. "Вышел компилятор языка D 2.076"  +/
Сообщение от Аноним (-), 02-Сен-17, 23:18 
> Если для Obfuscated C Contest - то да. Если нормальный индустриальный код
> - то примерно так и пишут по возможности.

То есть тебя даже

   #define size    8190
   #define sizepl  8191

исключительно ради того, чтобы написать <= вместо < не напрягает?

Ответить | Правка | Наверх | Cообщить модератору

21. "Вышел компилятор языка D 2.076"  +/
Сообщение от Crazy Alex (ok), 03-Сен-17, 00:58 
Ну залип человек на каком-то злобном (и замшелом) coding standard, не первый он такой и не последний. Собственно, это много по чему видно, начиная с дефайнов для true/false.
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




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

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