The OpenNET Project / Index page

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



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

Оглавление

Inlinec - новый способ использования Си-кода в Python-скриптах, opennews (?), 03-Фев-20, (0) [смотреть все]

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


126. "Inlinec - новый способ использования Си-кода в Python-скрипт..."  +1 +/
Сообщение от Аноним (124), 06-Фев-20, 04:50 
Без сложных задач:
вот этот код на чистых Сях:
(сумма в цикле)

#include <stdio.h>

int main ()
{
   long a;
   long sum;
   /* for loop execution */
   for( a = 0; a < 10000000; a++ )
   {
        sum += a;
   }
    printf("sum: %ld\n", sum);
   return 0;
}


выполнится в лучшем случае в 3 раза быстрее (что обычное число отставания Go от чистых С в бенчах) чем на Python3 через pypy (при втором запуске)

sum = 0
for i in range(10000000):
    sum+=i
print(sum)


^^^
А выразительность, и краткость листинга, я думаю наглядна, "писакам всего на Сях" :)

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

127. "Inlinec - новый способ использования Си-кода в Python-скрипт..."  +/
Сообщение от Аноним (127), 06-Фев-20, 14:03 
Ну то есть за 4 строчки кода вместо 8 готовы пожертвовать 3x производительности. Ох уж эти пыхтонисты.
Ответить | Правка | Наверх | Cообщить модератору

128. "Inlinec - новый способ использования Си-кода в Python-скрипт..."  +/
Сообщение от Аноним (127), 06-Фев-20, 14:03 
И то инклуд, main() и return 0 можно не считать, то есть не 8 даже, а 5.
Ответить | Правка | Наверх | Cообщить модератору

134. "Inlinec - новый способ использования Си-кода в Python-скрипт..."  +/
Сообщение от Аноним (-), 06-Фев-20, 16:59 
> И то инклуд, main() и return 0 можно не считать, то есть
> не 8 даже, а 5.

К тому же на инклуд можно забить, если уж програмить с качеством как у питонистов. И фигурные скобки в for лишние, однако.

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

139. "Inlinec - новый способ использования Си-кода в Python-скрипт..."  +/
Сообщение от Аноним (124), 06-Фев-20, 21:44 
x3 это вообще среднее отставание golang от C на многих бенчах. А уж асму то сколько "иксов" слили и подумать страшно.
Ответить | Правка | К родителю #127 | Наверх | Cообщить модератору

136. "Inlinec - новый способ использования Си-кода в Python-скрипт..."  +/
Сообщение от InuYasha (?), 06-Фев-20, 20:18 
у тебя ошибка в коде и рандомный результат.

{
    long sum = 0;
    for (long a = 0; a < 10000000; a++)
        sum += a;
    printf("sum: %ld\n", sum);
}

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

137. "Inlinec - новый способ использования Си-кода в Python-скрипт..."  +/
Сообщение от Аноним84701 (ok), 06-Фев-20, 21:02 
> у тебя ошибка в коде и рандомный результат.
> {
>     long sum = 0;
>     for (long a = 0; a < 10000000;
> a++)
>         sum += a;
>     printf("sum: %ld\n", sum);
> }

Результат по-любому "рандомный", т.к. будет вычислен во время компиляции (начиная с -O1) и в итоге "замерять" будут время старта и вывода константы:

echo 'long foo(void) {long sum = 0; for (long a = 0; a < 10000000; a++) sum += a;return sum;}'|gcc -O2 -S -x c - -o -
foo:
.LFB0:
    .cfi_startproc
    movabsq    $49999995000000, %rax
    ret
    .cfi_endproc

Ну и вообще, пока горячие парни опеннета упорно сравнивают длин^W разм^W количество скобок-строк, однострочник на awk (вообще без скобок и отступов) делает их, как стоячих – что по скорости, что по минимализму 😎 *gg*


echo 10050000000000000000|time gawk '$0=$1*($1-1)/2'
50501249999999996460144636159871418368
gawk '$0=$1*($1-1)/2'  0,00s user 0,01s system 80% cpu 0,006 total

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

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

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




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

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