LINUX.ORG.RU

Jinja2 на С++

 ,


0

3

Вышел шаблонизатор файлов на С++ Jinja2Cpp. Это генератор файлов на основании шаблонов, аналог известной программистам на Python Jinja.

За основу взята спецификация Jinja.

Статьи от автора, раскрывающие некоторые аспекты и освещающие тёмные места — здесь и здесь.

>>> Подробности

Ответ на: комментарий от mx__

Нууу... Да, соглашусь.

Вдобавок, для С есть такой проект как libctemplate. Но он больше всё таки, к перловому HTML::Template.

А так-то да, грамотно и тщательно проскриптованный vim это хороший генератор файлов.

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

Какой ещё шаблонизатор, иди обратно в школу русский учи — раздел «словообразование». Суффиксы не для прикола добавляют, если что. И шаблонизатор тут вообще не подходит, даже несмотря на всех нерусей планеты, которые не умея в язык в него отчаяно пытаются.

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

С таким текстом - в talks или в dev.

Не с таким текстом, а с такой податливостью всяким нерусям в комментариях. Ещё и оправдывается пред ними. ТС, да гони ты их ссаными тряпками подальше, они тебе сейчас на уши накидают.

anonymous ()

Гугл://суффикс атор

существительное производное от действия, которое оно совершает

Гугл://шаблонизировать

Подчинить (подчинять) единому образцу, устроить (устраивать) по какому-нибудь шаблону, сделать (делать) шаблонным.


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

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

Так себе преимущество.

Почему? Есть программа на C++, её результат надо писать в файл по сложному формату, описываемому шаблоном. Предлагаешь делать сериализацию всех данных в питон и запускать его?

monk ★★★★★ ()
Ответ на: комментарий от anonymous
"I use Askama for actix's TechEmpower benchmarks." -- Nikolay Kim, creator of actix-web

"Pretty exciting. I would love to use this already." -- Armin Ronacher, creator of Jinja

Мне одному эта мусорная пропаганда напоминает рекламу для домохозяек? Хотя ЦА этого говна домохозяйки, но всё. Это же попросту позор.

Особенно смешна ссылка на сектанта, а так же на пистон-макаку. Их мнение крайне важно, к тому же неизвестно что писали эти клоуны для другой подобной херни, да и писали ли они это вообще.

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

Расшифровываю в виде таблички

ШаблонPythonJinja2C++ (MSVC build)Jinja2C++ (MinGW Build)
‘Hello World from Parser!’ (1 млн. итераций)4.333 сек1.883 сек0.831 сек
‘{{ message }} from Parser!’ message=‘Hello World!’ (1 млн. итераций)5.0832.1881.082
‘{{ message }} from Parser!’ message=100500 (1 млн. итераций)5.1262.2111.087
‘{{ message | upper }} from Parser!’ message=‘Hello World!’ (1 млн. итераций)5.5833.5591.850
‘{{ message }} from Parser! - {{number}}’ message=‘Hello World!’, number=100500 (1 млн. итераций)5.8002.5941.504
‘{% for i in range(20)%} {{i}} {%endfor%}’ (20 тыс. итераций)2.4852.9171.966
‘{% for i in range(num)%} {{i}} {%endfor%}’ num=20 (20 тыс. итераций)2.5752.7682.040
‘{% for i in range(20)%} {{i ~ «-» ~ loop.index}} {%endfor%}’ (20 тыс. итераций)11.7206.3344.340
‘{% for i in range(20) if i is odd %} {{i}} {%endfor%}’ (20 тыс. итераций)2.6203.7102.733

Время - полное: парсинг шаблона (1 раз) + рендеринг (указанное количество итераций)

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

Что это должно значить?

Ну понимаешь, какие-то возгласы важны только тогда, когда их автор выразил их только к чему-то одному. Но обычное подобные цитатки дёргаются из всяких бложиков, где авторы обозревают подобную херню и для каждой новой херни они пишут «отлично».

К тому же, ниже автор мог написать «а моя поделка просто божественна». Таким образом заключение «хорошо» становится «говном». Нету чёткой шкалы, нету инфы о том, что эти же пациенты говорили про другие поделки(другие шаблонизаторы).

К тому же, один из пациентов является сектантом, который попросту будет лизать жопу расту. Второй является пистон-макакой, а «based on Jinja», т.е. по-сути пациент мог попросту хвалить себя в этой мусорной поделки.

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

Ответ на твой вопрос:

Причём, мне интересно, откуда такая разница (в два раза, Карл!) в скорости работы между студийным и gcc-шным компилем.

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

Я тоже долго удивлялся когда сравнивал интринсики в gcc и в icc. Хотя, фигли тут удивляться, если явно что в интеле для своих процов и для их микропрограммного кода они свои же спеки реализуют более качественно. Это в принципе тоже понятно. Но мне кажется что современный визуалстудийный компиль хреново на С++ в чистом виде ориентирован, чего не скажешь о gcc.

Moisha_Liberman ()
Ответ на: Ответ на твой вопрос: от Moisha_Liberman

Re: Ответ на твой вопрос:

Но мне кажется что современный визуалстудийный компиль хреново на С++ в чистом виде ориентирован, чего не скажешь о gcc.

Возможно. А возможно, не хватает каких-нибудь волшебных опций типа SECURE_NO_SCL=0. Хз, короче.

anonymous ()
Ответ на: Ответ на твой вопрос: от Moisha_Liberman

Но у меня, по известным тебе причинам ни вижуалстудийного, ни мингв нет. Тут я пас.

Потому что маздайское говно не является компилятором. Вообще, никак и никогда.

Для поржать: https://www.youtube.com/watch?v=m9tcmTjGeho&feature=youtu.be&t=3689

Кстати, там адепт врал про gcc. gcc везде и во всех тестах быстрее. Типичная clang-пропаганда.

Я тоже долго удивлялся когда сравнивал интринсики в gcc и в icc.

Тоже херня. icc говно и сливает gcc в «интринсики».

микропрограммного кода они свои же спеки реализуют более качественно.

Реализовано хуже. Они там реализуют совершенно другое.

Но мне кажется что современный визуалстудийный компиль хреново на С++ в чистом виде ориентирован, чего не скажешь о gcc.

Это говно в си не может вообще. Поэтому на что та оно ориентировано - наясно.

tsaruchetkav1 ()
Ответ на: Re: Ответ на твой вопрос: от anonymous

Погодь-погодь...

Я уже подзабыл визуалстудийный компиль, поправь если я не прав, но там, ЕМНИП, по дефолту стоит ключ на внедрение проверок от срыва стека. /Gs или как-то так. Если да, то это проверки от срыва стека и, следовательно, код для них. Ну и так надо посмотреть на ключи. Это потенциально может замедлять.

В гнусном компиле по дефолту это не должно ставиться. Следовательно, и замедление не должно присутствовать на операциях такого рода. Я про -fstack-protect/-fstack-no-protect и вообще вот это вот всё.

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

Не. На Интел атом не сливает.

icc говно и сливает gcc в «интринсики».

На AMD сливает. На ARM NEON... Туда с icc и лезть нехер. Чисто интеловые процы и только.

Они там реализуют совершенно другое.

Интела реализуют то что им нужно. И своих спек, как я понимаю, они до конца не открывают. Это очевидно.

Это говно в си не может вообще. Поэтому на что та оно ориентировано - наясно.

С++ отчасти и С++/CLI максимум. Не более того. С там уже давно не в приоритете. Компиль они переточили. Им ещё сисярп тянуть. Зачем им С?

Moisha_Liberman ()
Ответ на: Не. На Интел атом не сливает. от Moisha_Liberman

На AMD сливает. На ARM NEON... Туда с icc и лезть нехер. Чисто интеловые процы и только.

На интел сливает.

Интела реализуют то что им нужно. И своих спек, как я понимаю, они до конца не открывают. Это очевидно.

Полная херня. Тебе сказали, что они не делают то, о чём ты где-то услышал. Вернее делают, но хуже гцц. Назначение их компилятора другое. Я тебе расскажу какое. Их задача мочь собирать говнокод запартных гениев. Они там занимаются даже тем, что попросту в коде ищут определённые алгоритмы и заменяют их.

Подобные оптимизации есть и в гцц, но они базового уровня. Там поиск memcpy и прочее. А там же ищут базовые(и не только) мат-алгоритмы.

С++ отчасти и С++/CLI максимум. Не более того. С там уже давно не в приоритете. Компиль они переточили. Им ещё сисярп тянуть. Зачем им С?

Он явно не си, он явно не С++.

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

Предположительно...

Jinja2 на С++ (комментарий)

В MS-компиле могут быть включены какие-то опции, вносящие задержки из-за дополнительных проверок. В gcc нет. Та же проверка на срыв стека может оказаться дорогим удовольствием.

Ну и С явно в последнее время в MS не в фаворе, так что они могли что-то там намудрить с компилятором. Это тоже надо учитывать. На выхлоп компиля смотреть надо.

Moisha_Liberman ()