LINUX.ORG.RU

В конце февраля в Москве пройдёт конференция C++ Russia

 , ,


1

1

27-28 февраля в Москве пройдёт конференция C++ Russia. Конференцию организует C++ User Group при поддержке Лаборатории Касперского, PVS-Studio и JetBrains.

Будут представлены доклады о современном C++, различных библиотеках, новых подходах к созданию программ на C++. Большое внимание будет уделено асинхронности и мультипоточности.

Открывать конференцию будет Sean Parent, кроме того выступят Zoltan Porkolab, Bartosz Milewski, Максим Хижинский, Григорий Демченко и многие другие.

>>> Подробности и регистрация на сайте



Проверено: Shaman007 ()
Последнее исправление: Shaman007 (всего исправлений: 1)
Ответ на: комментарий от snaf

3 секунды разница не много для красоты, но сишники этого не поймут

Frost ★★★
()
Ответ на: комментарий от kas501

Разница конечное есть, но КАК такой кусок кода выполняется 37 секунд?

Легко. Достаточно использовать динамическую типизацию, боксить всё подряд, и реализовывать выход из цикла через исключения.

Тыц. Сишник скомпилирован с -O2.

$ time python test.py
0.782010319461

real    0m14.810s
user    0m13.417s
sys     0m0.112s

$ time ./test
0.782010

real    0m14.119s
user    0m13.421s
sys     0m0.052s

Ну, это учитывая, что нормальные люди понимают, что Питон создавался отнюдь не для числодробильни.

ilammy ★★★
()
Последнее исправление: ilammy (всего исправлений: 1)
Ответ на: комментарий от ilammy

Легко. Достаточно использовать динамическую типизацию, боксить всё подряд, и реализовывать выход из цикла через исключения

Спасибо, повеселил! А теперь, если не затруднит, версию на питоне, аналогичную по результатам В конце февраля в Москве пройдёт конференция C++ Russia (комментарий)

rmammoth
()
Ответ на: комментарий от anonymous

Ничего удивительного. Синхронный говнокод не учитывающий кэши на си++ не будет особо медленней такого же синхронного говнокода на питоне.

ranka-lee
()
Ответ на: комментарий от rmammoth

Эта... я ж забыл, что там ещё интерпретатор надо стартовать, модули найти и подгрузить, и прочее. Я думаю, это может потянуть на недостающие 10 секунд!

ilammy ★★★
()
Ответ на: комментарий от rmammoth

У тебя, видимо, второпитон, он пошустрее:

Видимо, да:

askinfra@infra:~/projects$ python --version
Python 2.7.3

Infra_HDC ★★★★★
()
Ответ на: комментарий от rmammoth

Я совсем про это забыл

вот прогон плюсов

time ./a.out 
0.78201

real    0m8.927s
user    0m8.904s
sys     0m0.011s

Результат просто поразителен. Frost

P.s. во время выполнения тэста закрыл всё что может потреблять cpu.

snaf ★★★★★
()
Последнее исправление: snaf (всего исправлений: 1)

Раз пошла такая тема, то:
time python ./test.py
0.782010319461

real 0m19.542s
user 0m18.417s
sys 0m1.120s

На плюсах не скомпилил

sehellion ★★★★★
()
Ответ на: комментарий от snaf

вот прогон плюсов

Интересный результат! А как у pypy с многопоточностью? Можно ли сделать что-то вроде этого В конце февраля в Москве пройдёт конференция C++ Russia (комментарий) ? Если да, то к pypy действительно стоит присмотреться.

rmammoth
()
Ответ на: комментарий от sehellion

На плюсах не скомпилил

Попробуй заменить тип auto на double, т.е. вот так:

#include <iostream>
#include <math.h>

int main()
{
    double sum = 0.0;
    for(double i=0; i<100000000; ++i)
        sum += sin(i);
    std::cout<<sum;
}

Infra_HDC ★★★★★
()

не люблю кресты, но всё ж приятно, что любители пистона посрамлены

anonymous
()
Ответ на: комментарий от snaf

а каким образом через pypy прогнать или это долго объяснять?

frost@station:~/cpp/test_cp# time ./a.out 0.78201 real 0m7.517s user 0m7.444s sys 0m0.016s

frost@station:~/cpp/test_cp# time ./test.py 0.782010319461 real 0m33.046s user 0m30.730s sys 0m2.076s

Frost ★★★
()
Ответ на: комментарий от anonymous

однако если для эксперимента взять какое-нибудь железо послабее (например, как в моём случае, cubieboard2), то тормоза пистона не то что видны невооружённым глазом, а прямо-таки бесят. на нормальном железе они не всегда заметны, но общую мощность компьютера снижают: нельзя будет нагрузить его таким количеством задач, как без пистона.

тебе не нравится твоя новая работа? это же так клево чистить улицы

anonymous
()
Ответ на: комментарий от rmammoth

На самом деле, это хреновый тест, так как использовать скриптовый язык тупо для того, чтобы что-то в цикле посчитать - это охренительный оверхэд, и спорить с этим будут только совсем уж упоротые фоннаты. Причем такой вычислительный код легко написать даже на асме.

Суть скриптов в том, что когда большую часть программы составляет вызов API-функций, т.е. гуй и сеть, оверхэд стремится к нулю,а всякие высокоуровневые плюшки освобождают от унылого рутинного кода, типа освобождения памяти, возни с коллбэками и т.д.

Поэтому честный тест производительности, подходящий к области применения Пистона - это нарисовать 100500 прямоугольников. Или перегнать 100500 пакетов по лупбэку. Те, кто используют Питон в качестве числодробилки - ССЗБ. Если нужно считать - используйте готовые алгоритмы из математических модулей, или пишите модуль сами, на чем хотите. А приведенный тест годен разве что для разжигания холивора, и только :)

anonymous
()
Ответ на: комментарий от rmammoth

Если не жалко памяти, то можно так:

from numpy import arange, sin

def test():
    return sin(arange(100000000)).sum()

print(test())

$ time python ./test.py
0.78201031946

real	0m3.821s
user	0m3.713s
sys	0m0.107s

Если все-таки жалко, то так:

from numpy import arange, sin

def test():
    n = 100000000
    m = 1000
    sum = 0
    for i in range(n//m):
        sum += sin(arange(m) + m*i).sum()
    return sum

print(test())
$ time python ./test.py
0.78201031946

real	0m4.353s
user	0m4.340s
sys	0m0.013s

anonymous
()
Ответ на: комментарий от anonymous

На самом деле, это хреновый тест, так как использовать скриптовый язык тупо для того, чтобы что-то в цикле посчитать - это охренительный оверхэд, и спорить с этим будут только совсем уж упоротые фоннаты

Уважаемый анонимус! Во-первых, я нигде не предлагал использовать питон как числодробилку. Во-вторых, некий (отличный от вас?) анонимус утверждал, что не наблюдает разницы в скорости от слова вообще, что и призван опровергнуть данный пример, не более того.

rmammoth
()
Последнее исправление: rmammoth (всего исправлений: 1)
Ответ на: комментарий от Frost

Core i7 4558u. Не в процессоре дело, а в numpy :)

Вот так работает код на СИ:

$ time ./test_cpp 
0.78201
real	0m3.659s
user	0m3.657s
sys	0m0.003s

anonymous
()
Ответ на: комментарий от anonymous

Если не жалко памяти, то можно так:

Производительность numpy имеет такое же отношение к производительности собственно питона, как рендеринг в GPU к жесткому диску, на котором лежит 3д-моделька. Понятно, что в данном случае большую часть времени работает написанный на C библиотечный код numpy, только как это подnверждает сей тезис, с которого и началась дискуссия?

Можно вообще вынести плюсовый код из примера в либу, прикрутить ее к питону и радоваться немеряной скорости питона, ни в чем не уступающего C++ ;)

rmammoth
()
Последнее исправление: rmammoth (всего исправлений: 2)
Ответ на: комментарий от rmammoth

Нужно понимать слабые места питона (как и любого другого языка), и не вычислять сумму синусов в цикле (образно выражаясь). Как писал I-Love-Microsoft

работа с железом и критичные участки для вычисления - отдельные модули на Си

Я лишь показал, что данный код на питоне можно существенно ускорить, используя удобные биндинги numpy для работы с нативными массивами и математикой. И в либу уже все вынесено. Питон ведь - это не только встроеные функции, да модуль math.

anonymous
()
Ответ на: комментарий от anonymous

Нужно понимать слабые места питона

Для этого в первую очередь надо признать их наличие, что отказываются делать некоторые анонимусы (речь не о вас, лень снова вставлять ссылку).

Дабы положить конец затянувшейся дискуссии, я просто оставлю здесь ссылку: http://benchmarksgame.alioth.debian.org/u32q/compare.php?lang=python3&lan...

По результатам бенчмарков видно, что, применив питон вместо С++, можно не потерять в скорости почти ничего, а можно затормозиться более чем в сотню раз, в зависимости от задачи. Компромиссный вариант каждый ищет сам, ок? ;)

P.S. Когда на питоне можно будет сделать так, приходите, обсудим и порадуемся.

rmammoth
()
Последнее исправление: rmammoth (всего исправлений: 1)
Ответ на: комментарий от rmammoth

pypy же много памяти кушает, по сравнению с cpython. В некоторых местах это критично.

FIL ★★★★
()
Ответ на: комментарий от rmammoth

Компромиссный вариант каждый ищет сам, ок? ;)

Ок :)

При всей красоте питона, часто приходится возвращатся к си, т.к. такие ресурсоемкие задачи, как вычисления на кластерах, на питоне ни как не решить. Зато он прекрасно справляется с постобработкой результатов.

anonymous
()

какого хрена вы все тут делаете?!

anonymous
()
Ответ на: комментарий от rmammoth

P.S. Когда на питоне можно будет сделать так, приходите, обсудим и порадуемся.

Пол секунды, конечно, не получается, но можно зайти на эту страничку: http://wiki.scipy.org/Cookbook/Multithreading и скомуниздить оттуда файлик handythread.py (написан под питон-2). В нем просто упрощена работа с модулем threding.

from handythread import parallel_map
from numpy import arange, sin

def test():
    n = 100000000
    m = n/100
    func = lambda x: sin(x).sum()
    ranges = (arange(m) + i*m for i in range(n/m))
    res = parallel_map(func, ranges)
    return sum(res)

print(test())
$ time python2 ./test.py
0.78201031946

real	0m1.700s
user	0m4.810s
sys	0m0.077s

Хоть какое-то ускорение :)

anonymous
()
Ответ на: комментарий от anonymous

Не знаю, не знаю... Я недавно на пайтон перешел - ни о чем не жалею! И вопреки мнению непонятных людей - нихрена скорость выполнения не ниже.

Мне кажется это потому, что у вас склад ума такой - заставить cpp-шки ползать как питоны, надо очень сильно постараться.

robus ★★★★★
()
Ответ на: комментарий от anonymous

Пол секунды, конечно, не получается

В том примере, похоже, 8 потоков шуровали в параллели, судя по времени. Здесь 3?

rmammoth
()
Ответ на: комментарий от Frost

а каким образом через pypy прогнать или это долго объяснять?

просто устанавливаешься pypy. И потом в консоли запускаешь:

time pypy script.py

snaf ★★★★★
()
Ответ на: комментарий от snaf

спасибо, я понял уже что это через pypy идёт, буду знать

Frost ★★★
()
Ответ на: комментарий от anonymous

... 5 лет программировал на С++, а теперь начал на пайтоне.
... Что еще за Фредерик, и почему мне должно быть интересно в какой яме он оказался?

Сто кружек чаю этому анониму.
А вообще печально, что такие вот «программисты» теперь, которые даже не слышали про Ф. Брукса и МЧМ ((((

anc ★★★★★
()
Ответ на: комментарий от Infra_HDC

Да, все три Hello World! И писать гораздо проще!!1

anonymous
()

«современный С++» - не менее смешной оксюморон, чем «модерновый фортран». Этот язык получил смертельный удар с первым garbage collector, а окончательно умер с выходом C#. Но похороны сильно затянулись...

matumba ★★★★★
()
Ответ на: комментарий от matumba

Этот язык получил смертельный удар с первым garbage collector

толсто. про питон тоньше было.

dinama
()
Ответ на: комментарий от matumba

«современный С++» - не менее смешной оксюморон, чем «модерновый фортран». Этот язык получил смертельный удар с первым garbage collector, а окончательно умер с выходом C#. Но похороны сильно затянулись...

Очередной фанбой автоматического поддерживания трусов и вытирания сопелек быдлокодерам детектед. Когда ж вы уже закончитесь?

Стесняюсь спросить, какой ЯП предпочитает уважаемый фанбой?

rmammoth
()
Последнее исправление: rmammoth (всего исправлений: 1)
Ответ на: комментарий от matumba

сборщиком мусора Simula-67ы - родовая травма : отсутствие пятой ноги.

qulinxao ★★☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.