Здравствуйте, Vzhyk, Вы писали:
V>22.07.2011 4:13, мыщъх пишет: >> что касается скорости -- этот код планируется применять и для анализа >> сетевого трафика в реальном времени. надо ли говорить, что динамические >> языки и реалтайм вещи несовместимые? >> >> а в глобальном смысле, конечно, нельзя говорить, что питон всегда >> медленнее си. если все упирается в дисковый ввод/ввывод, то скорости >> могут быть практически равны. но стоит перейти на ssd или ram-диск и си >> имеет шансы вырваться вперед. V>Опять вера и фантазии.
если вы совместили динамические языки с реалтаймом, то нобелевку вам быть может и не дадут, но национальную премию точно. даже на си для реалтайма нужно переписывать часть рантайма, чтобы иметь возможность оценить время выполнения базовых операций. питон к этому делу можно прикрутить только с офигенными запасами по скорости, да и то без гарантий, т.к. в новой версии питона могут все сломать.
V>Я очень редко пишу обработку строковой информации, чаще числодробилки. V>Так вот matlab (интерпретатор) во многих задачах рвет С, как тузик V>грелку (или ты потратишь недели и месяцы на оптимизации на С).
не гони пургу начальник. тут все упирается в алгоритмы. в матлабе они, надо полагать, оптимизированые по самые помидоры, а потому наивные подходы решения тех же задач на си в "лоб" обречены на провал.
но вы ушли от темы. предлагалось сравнить матричную FMS на си с регулярками на питоне. в лучшем случае, питон будет не сильно медленнее, т.к. все упрется в ввод/вывод, но на практике, процессоры не настолько быстры, а питон не столь продвинут. хотя в теории, можно скомпилировать регулярки в FMS, но только с ограничениями. в общем случае регулярки в FMS не компилируются и это базовая матчасть которая уже давно доказана.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, alzt, Вы писали: A>Сам себя ведь подловил. A>Товарищи, программирующие на Питонах-Лиспах, всецело полагаются на компилятор. Им не нужно знать детали. Если вдруг изменится набор команд или ещё какие-то особенности, меняющие баланс, то программу переписывать не надо. В новом компиляторе сделают более эффективную реализацию строк и питоновская программа её начнёт использовать.
я занимался в том числе и видеокодекодированием. напишите-ка на лиспе какой-нибудь энкодер.
когда вы занимаетесь формошлепством, вам действительно не надо лезть своими ручками в реализацию базы данных, когда вам нужна действительно скорость, вы все будете делать руками, иначе гугл бы например, свой поиск на, там, sql сервере оракловском бы сделали, да не парились. вы не напишете антивирус или видеокодек на лиспе, такие штуки у вас будет кодировать 1 кадр в секунду или обрабатывать 1 файл в час, зажирая при этом всю память компа. ну выйдет новая версия компилятора, будет давать 2 кадра в секунду и 2 файла в час.
Здравствуйте, SkyDance, Вы писали:
М>>а я вот так: http://www.gnu.org/software/autogen/autofsm/example-fsm-c.html М>>у меня вообще непредсказанных ветвлений нет
SD>"Ну да, конечно" (С) SD>Вот как раз ваш пример — яркая демонстрация того, как процессору вывихнуть TLB и еще много чего. Линейно-циклический код в такой ситуации работает как минимум не хуже (но при этом не обладает недостатком статичности программы, т.е. не надо пересобирать софтину при появлении нового паттерна или автомата).
применительно к решаемой задаче -- основная таблица (в которой проц проводит 99% времени) влезает в сотни байт. ну а как построить КА в общем случае мы с вами по моему уже обсуждали ранее и если память мне не изменяет, то сошлись на гибридной архитектуре. сложная логика транзакций описывается на си, простая -- задается табличными методами.
SD>В общем, если как следует поддержать сей конкурс (ну что вам 100 килобаксов, так, карманные расходы) — я продемонстрирую, что КА, не развернутый в коде, а хранящийся как граф в памяти, как минимум не проиграет КА в виде С-кода. Ессно, паттерны и их распределения мы заранее оговариваем.
вы же только что говорили, что у вас были проблемы с предсказанием переходов? даже если код влазит в кэш, то будут промахи по переходам с тормозами на конвеере. очевидно, что если граф не влезает в кэш данных, то будут кэш промахи по данным.
SD>А потом я продемонстрирую, как просто и изящно в рантайме можно добавлять SD>новые КА в моём подходе, а вы будете громоздить устрашающие build system для вашего.
в описываемой задаче мы ищем ключевые слова, которые заданы спецификацией на формат данных и появление новых слов не ожидается. и потому КА можно построить и руками.
SD>ЗЫ — я небогатый, для меня даже 10к это много, но готов поставить на такой вот спор. SD>Коли вы так уверены в своих силах, вам плечо 1:10 не должно показаться суровым.
хорошо, давайте так. вы пишите код на питоне (пусть даже с си библиотеками), а я в последний момент выбираю железо и ось с настройками по умолчанию. а потом мы на этом железе сравниваем мой код на си и ваш на питоне. однако, для сравнения дело думаю не дойдет, т.к. вы отвалитесь в первом раунде по отсутстию питона на целевой оси
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, alzt, Вы писали:
A>Здравствуйте, __kot2, Вы писали:
__>>вы можете только асимптотически бесконечно приближаться к максимально эффективному бинарному коду, который дает C/C++, но вы всегда будете позади. а ведь товарищи еще могут поменять какие-то реализации, например, строк или массивов в Питоне-Лиспе. что тогда? что-то изменится. вы точили-точили, придется все заново, под новую реализацию.
A>Сам себя ведь подловил. A>Товарищи, программирующие на Питонах-Лиспах, всецело полагаются на компилятор. Им не нужно знать детали.
если производительность не критична, то питон -- вполне вариант. но, повторяю, помимо скорости есть еще и проблемы интеграции. даже если на целевой оси есть питон, то включать его в дистр это головная боль и это денежные затраты. вы что, никогда дистров не собирали?! конечно, все эти проблемы решаемые, но... это проблемы. у юзера уже может стоять питон, но другой версии. возможно, будут какие-то ограничения на экспорт технологий (в базовую поставку питона входит куча криптобиблиотек)...
в этом смысле компилируемые языки проще
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, Vzhyk, Вы писали:
V>22.07.2011 3:21, SkyDance пишет:
>> >> К чему это я, к тому, что далеко не всегда "рукописные" решения >> выигрывают у промышленных-проверенных. V>Ну не разбивай ты веру у людей в "серебряные пули". V>Нормальные люди пишут сначала быстро и просто, потом, если V>быстродействие не удовлетворяет начинают заниматься оптимизацией.
я как бы и не возражал. и в основном упирал на то, что компилируемые языки проще воткнуть в другой проект. особенно си. а вот плюсы можно подключить только если наружу будут API в си-стиле, т.к. декорация имен не стандартизирована.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, мыщъх, Вы писали: М>а вот плюсы можно подключить только если наружу будут API в си-стиле, т.к. декорация имен не стандартизирована.
в смысле?
Здравствуйте, __kot2, Вы писали:
__>Здравствуйте, мыщъх, Вы писали: М>>а вот плюсы можно подключить только если наружу будут API в си-стиле, т.к. декорация имен не стандартизирована. __>в смысле?
в смысле если наружу из библиотеки торчит класс, то его можно использовать только в проекте, собранном тем же компилятором. ну или с плясками.
americans fought a war for a freedom. another one to end slavery. so, what do some of them choose to do with their freedom? become slaves.
Здравствуйте, Vzhyk, Вы писали:
V>22.07.2011 4:13, мыщъх пишет: V>Опять вера и фантазии. В каждом конкретном случае просто необходимо V>подбирать наиболее удобный и эффективный инструмент с учетом затрат на V>время разработки (и багфиксинг в т.ч.) V>Я очень редко пишу обработку строковой информации, чаще числодробилки. V>Так вот matlab (интерпретатор) во многих задачах рвет С, как тузик V>грелку (или ты потратишь недели и месяцы на оптимизации на С).
А текстовые данные matlab также хорошо обрабатывает? Ежу понятно, что в матлабе куча алгоритмов обработки цифровых данных зашита, скомпилирована и оптимизирована. И лоху с кривыми ручками лучше даже и не пытаться с ними тягаться.
З.Ы. Я занимаюсь потоковой обработкой биржевых данных. Причем не российского размера. По моему опыту мне очевидно, что стандартные реализации шаблонов можно только использовать при чтении параметров при запуске модуля. Дальше ручной разбор без шаблонов шаблоны уделывает в разы. И это на Java.
Здравствуйте, erslgoeirjh, Вы писали:
E>Я пока не прогуливал работу и меня не увольняли за это.
E>Просто я меня такая ситуация: свой плановый отпуск я в этом году уже отгулял. Причём разбил его на две части--две недели отдыхал в конце мая, другие две недели отдыхал в конце июня. А мне, возможно, придётся поехать в одно место на срок до одного месяца. Я хотел бы взять отпуск за свой счёт (то есть отпуск без содержания), но в моей организации начальство неохотно идёт на такие шаги (хотя и может разрешить). Вот поэтому и спрашиваю: что, если мне надо съездить в это место, а отпуск за свой счёт не дадут, то меня уволят по статье--за прогулы. И как это потом отразится на моей трудовой карьере.
E>И ещё вопрос: что говорит российское законодательство (в частности, Трудовой кодекс) об отпусках без содержания? В каких случаях они предоставляются и на какой срок?
Больничный? (cделать вовремя, а не задним числом — 500-1000р районному врачу на лапу)
М>но вообще-то под "быстро" я имел ввиду далеко не реактивную скорость. если не сказать "быстро" заюзают регулярки. а регулярки это тормоза, хотя на них такое пишется за час.
А схрена ли регулярки --- тормоза? Если задача вообще решается КА, что трудно понять из приведеного выше текста с поехавшими тегами (или это не теги?),
то регулярки это оно и есть. В реализации PCRE, может, и тормоза, но в целом написать вручную парсер быстрее какого-нибудь Ragel надо еще очень сильно постараться.
Т.е. в любом случае имеет смысл взять генератор, и только если скорости не хватит, постараться допилить.
Или закатывание солнца вручную --- это такой непременный принцип? Алсо, что значит "быстро" ? Где требования в токенах/в секунду, или в мегабайтах в секунду?
Где требования по памяти?
М>скажите -- вот на фига тут декларация структуры в .c файле, а в .h -- структура заюзана, но не декларирована? их мысль мне понятна. хотели вернуть что-то типа хэндла, с которыми работают только их функции, типа черный ящик. вот только зачем для этого ломать совместимость с другими компиляторами мне непонятно.
А почему нельзя это сказать разработчикам? Пусть исправят.
М>или это я такой придирчивый и хочу слишком много? а начальство мне говорит, что я сам виноват, типа требование ANSI C89 слишком туманное и нужны пояснения.
Одно можно сказать точно --- требования как-то надо четче формулировать. И стараться еще, что бы они не выглядели, как секс ради движения.
V>>>А так, уверен, что понравится. М>>визу сделать не проблема. работы просто уйма по всем направлениям. я уже отчаялся найти реверсеров. сейчас ищу просто программистов на си. вот тут дали пару человек в подчинении из австралии. сказал им написать простой парсер pdf, который просто ищет n n obj << filters >> и извлекает фильтр(ы). попросил написать на ANSI C89. казалось бы что проще?
W>Проще реализовать это на C++ используя std::string и компанию. Реализовывать в 2011 году что-либо на ANSI C89 — это либо мазохизм, либо странная тяга к изобретению собственных велосипедов.
М>применительно к решаемой задаче -- основная таблица (в которой проц проводит 99% времени) влезает в сотни байт. ну а как построить КА в общем случае мы с вами по моему уже обсуждали ранее и если память мне не изменяет, то сошлись на гибридной архитектуре. сложная логика транзакций описывается на си, простая -- задается табличными методами.
Да, припоминаю, действительно, обсуждали. Но зачем же вы тогда на второй круг зашли, с этими КА-в-коде?
М>вы же только что говорили, что у вас были проблемы с предсказанием переходов? даже если код влазит в кэш, то будут промахи по переходам с тормозами на конвеере. очевидно, что если граф не влезает в кэш данных, то будут кэш промахи по данным.
Так и у вас они тоже есть, если вы пользуетесь КА-в-коде. Кэш L1 довольно большой (от 32 Кб), промах по нему сравнительно недорог, кэш L2 уже очень большой (применительно к КА — хватит вместить любого разумного размера датасет). А вот промашка с предсказанеим перехода (постоянно случается на спагетти-коде, коим, уверяю вас, КА-в-коде и является) не только перезагружает конвейер, но еще и иногда дает до 200 (!!!) тактов штрафа, если применялись сложные инструкции (SSE-шные). Вдобавок, забиваясь на КА-в-коде, вы начинаете сильно зависеть от компилятора и, что еще печальнее, оптимизатора -> трудноуловимые сложноустранимые баги.
В общем, все мои studies на тему КА (и опыт использования КА-в-коде в паре релизов одной крупной российской компании) показал, что — да ну их в пень, эти КА-в-коде.
М>в описываемой задаче мы ищем ключевые слова, которые заданы спецификацией на формат данных и появление новых слов не ожидается. и потому КА можно построить и руками.
М>хорошо, давайте так. вы пишите код на питоне
Какой питон? О чем вы? Я вам о КА-в-коде vs. КА-в-данных.
PS: но на питоне, гм, вот это был бы challenge жаль, ничего не довелось еще написать на нем. А там прямой доступ к ассемблеру есть ?
Здравствуйте, SkyDance, Вы писали:
М>>вы же только что говорили, что у вас были проблемы с предсказанием переходов? даже если код влазит в кэш, то будут промахи по переходам с тормозами на конвеере. очевидно, что если граф не влезает в кэш данных, то будут кэш промахи по данным.
SD>Так и у вас они тоже есть, если вы пользуетесь КА-в-коде. Кэш L1 довольно большой (от 32 Кб), промах по нему сравнительно недорог, кэш L2 уже очень большой (применительно к КА — хватит вместить любого разумного размера датасет). А вот промашка с предсказанеим перехода (постоянно случается на спагетти-коде, коим, уверяю вас, КА-в-коде и является) не только перезагружает конвейер, но еще и иногда дает до 200 (!!!) тактов штрафа, если применялись сложные инструкции (SSE-шные).
Бедное SSE-расширение, которое придумали чтобы ускорять вещи, а не замедлять их. Я вам тайну открою, если оно вам не нравится, оно отрубается опцией компилятора. Кроме того, компилятор очень часто умеет if-conversion, а на том же Itanium статический конечный автомат в сишном коде он заберёт под предикаты и порвёт вообще всё. Считать же кеш-миссы прежде чем мы определились с целевой архитектурой, это называется "бла-бла-бла". Один и тот же код, откомпилированный в x32 и в x64 *по-разному* загружает конвеер одного и того же процессора.
SD>PS: но на питоне, гм, вот это был бы challenge жаль, ничего не довелось еще написать на нем. А там прямой доступ к ассемблеру есть ?
К *какому именно* ассемблеру? Можно заложиться на arm, mips, или x86 -- это из самых популярных, но закладка на любой из них скорее всего опустит ниже плинтуса два оставшихся (если не брать под прямые #ifdef). Или может что-то для DSP? Кроме того, тот же x86 он тоже местами РАЗНЫЙ.
В общем случае идея делать в виде data-driven КА... Ну в ней есть известное безумство и известный героизм, но вот там-то точно любой компилятор упарится с alias-анализом. А оставить простой сишный код -- таки есть шансы что на всём множестве в среднем съест очень хорошо. В общем надо очень смотреть. За те же сто тысяч долларов, которые вы назвали, да даже за десять, можно попытаться взять конкретную архитектуру и вылизать на ней баланс логики код/данные до блеска солдатской бляхи. Но кому нужна эта бляха в продакшн?
T>Бедное SSE-расширение, которое придумали чтобы ускорять вещи, а не замедлять их. Я вам тайну открою, если оно вам не нравится, оно отрубается опцией компилятора. Кроме того, компилятор очень часто умеет if-conversion, а на том же Itanium статический конечный автомат в сишном коде он заберёт под предикаты и порвёт вообще всё. Считать же кеш-миссы прежде чем мы определились с целевой архитектурой, это называется "бла-бла-бла". Один и тот же код, откомпилированный в x32 и в x64 *по-разному* загружает конвеер одного и того же процессора.
Когда город не указан, значит, речь о Москве архитектура не указана, значит, речь про x86, и, поскольку на дворе 2011, то x64. Неуказанный процессор — само собой, Intel, не ниже i3, и МА Sandy Bridge. Это у нас довольно давный спор с мыщьхом, перетекает из одной темы в другую
В любом случае, ваши выводы —
T>В общем случае идея делать в виде data-driven КА... Ну в ней есть известное безумство и известный героизм, но вот там-то точно любой компилятор упарится с alias-анализом. А оставить простой сишный код -- таки есть шансы что на всём множестве в среднем съест очень хорошо.
...я неоднократно доказывал на конкретных процессорах, конкретных датасетах (выбраных для конкретных условий, наиболее вероятных в нашем окружении).
А 100 тыс. долл. — это (не очень тонкий) стёб на мыщьхом. Но вот 10к на такую задачу — вполне разумные деньги, если бы я брал контрактора, рассчитывал бы примерно на такие суммы.
Здравствуйте, erslgoeirjh, Вы писали:
E>Просто я меня такая ситуация: свой плановый отпуск я в этом году уже отгулял. Причём разбил его на две части--две недели отдыхал в конце мая, другие две недели отдыхал в конце июня. А мне, возможно, придётся поехать в одно место на срок до одного месяца. Я хотел бы взять отпуск за свой счёт (то есть отпуск без содержания), но в моей организации начальство неохотно идёт на такие шаги (хотя и может разрешить). Вот поэтому и спрашиваю: что, если мне надо съездить в это место, а отпуск за свой счёт не дадут, то меня уволят по статье--за прогулы. И как это потом отразится на моей трудовой карьере.
Что важнее: не потерять текущую работу или попасть в то место? Как сказали, если начальство не войдет в твое положение, пиши по собственному за две недели до отбытия.
E>И ещё вопрос: что говорит российское законодательство (в частности, Трудовой кодекс) об отпусках без содержания? В каких случаях они предоставляются и на какой срок?
Так почитай, на консультанте ТК доступен всегда. Если кратко, то здоровому мужику предоставлять дополнительный отпуск, не важно с содержанием или без, не обязаны.
23.07.2011 2:39, mik1 пишет:
> > А текстовые данные matlab также хорошо обрабатывает? Ежу понятно, что в > матлабе куча алгоритмов обработки цифровых данных зашита, скомпилирована > и оптимизирована. И лоху с кривыми ручками лучше даже и не пытаться с > ними тягаться.
Да. Именно числодробилка и именно хорошо оптимизирована. И поэтому С я
использую только тогда, когда алгоритм вылизан на matlab и нужно его
встраивать в какую систему или выпускать в виде SDK.
> З.Ы. Я занимаюсь потоковой обработкой биржевых данных. Причем не > российского размера. По моему опыту мне очевидно, что стандартные > реализации шаблонов можно только использовать при чтении параметров при > запуске модуля. Дальше ручной разбор без шаблонов шаблоны уделывает в > разы. И это на Java.
Я когда-то читал, что perl под такие вещи разрабатывался и затачивался.
Как понимаю, по утверждениям многих тут и тебя, он сливает ручным
реализациям на С?
Здравствуйте, erslgoeirjh, Вы писали:
E>Интересно, можно ли у нас в России в настоящее время (2011 год) устроиться на работу, если уволили за прогулы? E>Имеется ввиду на любую работу, не обязательно программистом?
Трудавая книжка вообще не нужна. Есть знания — есть работа. Нет знаний — нет работы.
Здравствуйте, hrensgory, Вы писали:
H>22.07.2011 15:02, erslgoeirjh пишет:
>> Я пока не прогуливал работу и меня не увольняли за это. >> >> Просто я меня такая ситуация: свой плановый отпуск я в этом году уже >> отгулял.
H>... >> Вот >> поэтому и спрашиваю: что, если мне надо съездить в это место, а отпуск >> за свой счёт не дадут, то меня уволят по статье--за прогулы. И как это >> потом отразится на моей трудовой карьере.
H>Если начальство говорит — "нет и всё", а вам важнее оказаться там, чем H>сохранить работу — за 2 недели до убытия пишите заявление "по H>собственному". При увольнении вам, возможно, придётся частично вернуть H>отпускные за этот год (зависит от того, что за отпуск вы уже отгуляли), H>но это всё равно лучше чем открытый конфликт и увольнение по статье. H>Поскольку вы не знаете сегодня где вам придётся работать в будущем — H>трудовую книжку лучше сохранять в порядке, чтобы не сужать круг H>потенциальных работодателей.
H>-- H>WBR, H>Serge.
а ещё лучше поговорить с начальством до выхода в оплачиваемый отпуск и во время отпуска написать заявление по собственному желанию.
Здравствуйте, Donz, Вы писали:
D>Здравствуйте, erslgoeirjh, Вы писали:
E>>Просто я меня такая ситуация: свой плановый отпуск я в этом году уже отгулял. Причём разбил его на две части--две недели отдыхал в конце мая, другие две недели отдыхал в конце июня. А мне, возможно, придётся поехать в одно место на срок до одного месяца. Я хотел бы взять отпуск за свой счёт (то есть отпуск без содержания), но в моей организации начальство неохотно идёт на такие шаги (хотя и может разрешить). Вот поэтому и спрашиваю: что, если мне надо съездить в это место, а отпуск за свой счёт не дадут, то меня уволят по статье--за прогулы. И как это потом отразится на моей трудовой карьере.
D>Что важнее: не потерять текущую работу или попасть в то место? Как сказали, если начальство не войдет в твое положение, пиши по собственному за две недели до отбытия.
E>>И ещё вопрос: что говорит российское законодательство (в частности, Трудовой кодекс) об отпусках без содержания? В каких случаях они предоставляются и на какой срок?
D>Так почитай, на консультанте ТК доступен всегда. Если кратко, то здоровому мужику предоставлять дополнительный отпуск, не важно с содержанием или без, не обязаны.
Трудовой кодекс у меня дома есть. Я его почитаю.
Такой вопрос: на какой срок сейчас в России дают больничный? Если у меня вегето-сосудистая дистония и я приду к врачу и скажу, что у меня обострение, то на какой срок дадут больничный?