Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 11, 2019 16:27:15

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

На чем вы пишите высоконагруженные части системы: C++ или Cython?

Koala
это лучше с/c++ или да
скажут, что вам неплохо было бы научиться внятно выражать свои мысли



Офлайн

#2 Ноя. 11, 2019 22:04:39

Koala
Зарегистрирован: 2015-10-28
Сообщения: 59
Репутация: +  0  -
Профиль   Отправить e-mail  

На чем вы пишите высоконагруженные части системы: C++ или Cython?

OK, ТЗ понятно. Вопрос: есть ли преимущества у языка Go для высоконагруженных систем перед традиционными C/C++?

Офлайн

#3 Ноя. 11, 2019 22:30:15

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

На чем вы пишите высоконагруженные части системы: C++ или Cython?

Koala
есть ли преимущества у языка
У каждого существующего языка есть какое-то преимущество. Например ваша команда программистов его знает.

вики:
“Go! — многопоточный язык программирования, …. ориентирован на безопасное программирование и распределённость приложений”

Те следует ожидать что многопоточность будет проще делать. Ну а с С повозитесь и может будет быстрее работать.

Sanya28
запускаю удобный Qt Creator
Если он такой удобный то у вас явно есть шанс доказать это, быстро найдя в нем способ отладки в вашем случае.

Я данную ИДЕ не использую. В gdb проблем не испытываю. Я думаю потыркавшись по менюшкам вы легко найдете этот способ.

Sanya28
информативность результатов очень низкая. профайлер ругается на отсутствие отладочной информации у библиотeк Python.

Ну вы легко можете поставить отладочную версию питона. Думаю правда что это вам не надо. Вы же не питон собрались профилировать. Вам просто надо научиться пользоваться вашими инструментами и фильтровать то что вам нужно.

Из проблем вижу только необходимость отладки того что вам нагенерирует cython. Ваше ядро может просто раствориться в этой массе интерфейсного кода.



Отредактировано doza_and (Ноя. 11, 2019 22:33:33)

Офлайн

#4 Ноя. 12, 2019 01:09:41

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9846
Репутация: +  853  -
Профиль   Отправить e-mail  

На чем вы пишите высоконагруженные части системы: C++ или Cython?

Koala
Вопрос: есть ли преимущества у языка Go для высоконагруженных систем перед традиционными C/C++?
Ты знаешь, что у Go даже самая мелкая программка весит мегабайт? При этом на C я могу в мегабайт засунуть десяток пакетов о-о-очень полезных программ. Знаешь, при записи на какую-нибудь микросхему, где памяти нет, или даже хостинг в инете, где за каждый мегабайт просят по $100, это имеет значение. Конечно, прекрасно, что можно в программу всё включить и она не будет ни от чего зависеть. Но в нормальной среде правильно то, когда есть выбор, как тебе сделать - включать или не включать все зависимости. В Go же выбора нет.

Я бы не смешивал C и C++, так как это абсолютно разные языки по своему развитию, по своему стилю, по своим принципам оценки качества кода. Они противоположны по синтаксису: простота и компактность C и полнота и подробность в C++. В результате одна и та же программа на C занимает три строки по пять букв, а на C++ она же занимает двадцать три строки по двести букв. Так вот Go можно сравнить с C и Go можно сравнить с C++. Сравнивая Go с C++, мы видим, что в Go нет классов и исключений, нет шаблонов, нужно изощряться, чтобы писать на нём ООПшную программу (где реальное ООП, а не просто синтаксис, похожий на ООП).

Нравится изображать, что у тебя хорошая программа и что она легко читается и что вложения внутренних циклов уезжают за край экрана из-за обязательных табуляций шириной в 8 пробелов каждая и это просто циклы такие плохие - слишком высокое цикломатическое число у них? Это обман самого себя. Я же в C просто перехожу с классических четырёх пробелов на два пробела и у меня код с любой вложенностью читаем, кто бы там его ни написал (в плане цикломатического числа).



Отредактировано py.user.next (Ноя. 13, 2019 09:25:24)

Офлайн

#5 Ноя. 12, 2019 08:55:38

Sanya28
Зарегистрирован: 2019-11-10
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

На чем вы пишите высоконагруженные части системы: C++ или Cython?

Я вижу такое потенциальное решение вопроса отладки кода, в котором Python вызывает С++ (с передачей данных и возвратом результата работы):
создаются Python и C++ библиотки, в которых реализована возможность читать и писать в канал (с приостановкой программы отправителя по мере наполенения буфера канала). Тогда в обеих программах можно будет импортировать эти библиотеки, настроить целевые функции для приема / отправки данных, а потом запустить программы на Python и С++.

Должно вроде взлететь. Но возможно я не знаю уже существующих более простых решений.

Отредактировано Sanya28 (Ноя. 12, 2019 08:56:27)

Офлайн

#6 Ноя. 12, 2019 09:43:03

vic57
Зарегистрирован: 2015-07-07
Сообщения: 899
Репутация: +  126  -
Профиль   Отправить e-mail  

На чем вы пишите высоконагруженные части системы: C++ или Cython?

Sanya28
Должно вроде взлететь. Но возможно я не знаю уже существующих более простых решений.
самое простое - subprocess и не только для С/С++
 //palindrom.c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int pal(unsigned long n) {
    unsigned long v = 0;
    unsigned long m = n;
    while (1) {
        v += m%10;
        m /= 10;
        if (!m) break;
        v *= 10;
    }
    if (n == v) return 1;
    return 0;
}
int main(int argc, char** argv) {
    unsigned long start,stop;
    start = atol(argv[1]);
    stop = atol(argv[2]);
    for (unsigned long i = start; i < stop; i ++) {
        if (pal(i)) fprintf(stdout, "%lu ",i);
    }
    fprintf(stdout,"\n");
  return 0;
}
 gcc -Wall -O2 palindrom.c -o palindrom
 from subprocess import run, PIPE
from time import time
cmd = './palindrom 100 1000000'.split()
t0 = time()
p = run(cmd,stderr=PIPE,stdout=PIPE)
out = p.stdout.decode().split()
print(time() - t0,len(out))
вычисляет числа-палиндромы

Офлайн

#7 Ноя. 12, 2019 20:15:19

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

На чем вы пишите высоконагруженные части системы: C++ или Cython?

Sanya28
потенциальное решение вопроса отладки кода
Уважаемый, вам же написали что для отладки вам надо просто прочитать документацию по вашему инструменту отладки. Зачем же вы изобретаете желтого бегемота?



Офлайн

#8 Ноя. 13, 2019 08:26:42

Sanya28
Зарегистрирован: 2019-11-10
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

На чем вы пишите высоконагруженные части системы: C++ или Cython?

doza_and
Уважаемый, вам же написали что для отладки вам надо просто прочитать документацию по вашему инструменту отладки. Зачем же вы изобретаете желтого бегемота?

Ваше первое сообщение было настолько непрофессионально, что я решил на него никак не реагировать. Пожалуйста, больше не пишите в этой теме.

Отредактировано Sanya28 (Ноя. 13, 2019 08:49:04)

Офлайн

#9 Ноя. 13, 2019 09:27:42

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9846
Репутация: +  853  -
Профиль   Отправить e-mail  

На чем вы пишите высоконагруженные части системы: C++ или Cython?

Sanya28
Я вижу такое потенциальное решение вопроса отладки кода
А что ты делаешь в отладчике всё время? Почему просто не покроешь код юнит-тестами?



Офлайн

#10 Ноя. 13, 2019 10:43:04

Sanya28
Зарегистрирован: 2019-11-10
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

На чем вы пишите высоконагруженные части системы: C++ или Cython?

py.user.next
А что ты делаешь в отладчике всё время? Почему просто не покроешь код юнит-тестами?

Как юнит- тесты помогут запустить отладку двух- уровневой системы кода?

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version