![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Сишники, кто хочет бенчмарк?
![]() Давайте поставим задачу и сравним реализации на С и С++ по скорости. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
archimed7592,
давай в качестве компиляторов предлагаю G++ и GCC осталось только задачу придумать -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 2 Всего: 162 |
полностью поддерживаю это самое сложное ![]() проблема в том, что в С++-ом коде можно написать почти все те же конструкции, что и в С-шном. Тогда будет сравнение компиляторов ![]() |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Не думаю, что это критично. Давай проверим на разных компиляторах, заодно узнаем разницу между компиляторами ![]() Можно взять эту. Добавлено через 2 минуты и 17 секунд
Обещаю не списывать ![]() Добавлено через 2 минуты и 51 секунду -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
А чего не эту? ![]() По поводу задачи с сортировкой по категориям: как будут версии на Си и C++, сравним с этим, у меня есть подозрение, что как минимум не сортирующий вариант будет не медленнее ![]()
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Это будет несправедливо по отношению к Сишникам, но я не против ![]() Дык возьми оттуда любую плюсовую версию и проверь ![]() Это сообщение отредактировал(а) archimed7592 - 25.1.2008, 22:18 -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
Мне лень регистрироваться на форуме только ради того, чтобы скачать пару аттачей (никогда, кстати, не понимал этой политики не показывать аттачи гостям). Я лучше подожду родных винградовских решений ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
с чего это? настоящие сишники трудностей не боятся ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
А ты настоящий? ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
настоящие недолюливают С++ так что я наполовину настоящий ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Ну так чё? Fight? Или не fight?
Т.к. тестировать собираемся скорость, лучше, на мой взгляд, первая задача... угу? ![]() Добавлено через 21 секунду Или своё чё-нибудь предложишь? -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Давайте возьмем текстовый текстовый файл на 1Мб и удалим из него все слова длинее длинее 6 символов. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 4 Всего: 164 |
Востребован в:
- Настольных прилагах для широкого круга пользователей: важна скорость и отточеность, также поддержка старых ОС (95-98). - Серьёзных вычисляниях (кластеры солярис к примеру). - Кросс-платформенные прилаги (не надо гнать про Моно, пожалуйста). - Движках: БД, ОС, игры, всякого рода ЕРП (не прикладуха), итд. --------------------
|
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Вот, с чем не поспоришь - с тем не поспоришь ![]() Ты как считаешь, в Google достаточно серьёзные вычисления бегают? ![]() Там про С++ не слышали... Ну, точнее, слышали, но для обработки своих задач его не используют. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 2 Всего: 162 |
*поперхнулся* ... это вообще как? кто сказал? |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Очень просто ![]() ![]() Сами ходят по ВУЗам и рассказывают ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Ну хорошо, можно тогда еще добавить дублирование слов. Не хочеться особо сложной задачи, чтобы не лень было реализовывать ![]() Значит формулировка такая. --------------------------------------------------------------------------------------------- Из предложенного текста удалить все слова длинее 6 символов (только слова пробелы не трогать), все слова длиной в 3 символа продублировать 7 раз. --------------------------------------------------------------------------------------------- пример : "Гостиная Анны Павловны начала понемногу наполняться." -> " Анны начала " "война и мир" -> "война и мирмирмирмирмирмирмир" --------------------------------------------------------------------------------------------- текстовый файлик "Война и Мир" -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Добавлю к этому, что нужно считывать не из файла, а из потока стандартного ввода, а результат выводить в поток стандартного вывода, причём без каких-либо приблуд(помимо результата).
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 2 Всего: 162 |
||||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Если я поднатужусь и вспомню название, боюсь, что тебе оно ни о чём не скажет, ибо это их внутрений язык. Лучше потрать полчаса на то чтобы скачать лекции и ещё немного, чтобы прослушать их - много интересного узнаешь ;). Начни отсюда: http://youtube.com/watch?v=uwa7tRAUlPQ -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
А я и не говорил, что читать нужно из файла, не важно каков первоначальный источник, хоть ресурс, хоть сегмент данных. Время засекаем после того как получили готовый буфер в ОЗУ. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
archimed7592,
давай лучше задачу про категории -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Вот не надо этих "хоть" ![]() Т.о. можно будет написать тестер, который будет на автомате прогонять тысячу тестов для 3-5 решений. Нет, время засекается с момента старта приложения и до момента его завершения. Для того чтобы исключить разные издержки тест прогоняется 101 раз и берётся среднее от последних 100 запусков, причём делается это всё внешней утилитой. ![]() Ну давай ![]() Могу я поинтересоваться, чем тебя эта задача смутила? ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Давайте еще время отсчитывать от старта операционки ![]() -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
лень слишком много работы со строками -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Хорошо, наполовину настоящий Сишник, давай. Задача там вроде чётко поставлена
![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 2 Всего: 162 |
а мы сравниваем программы, а не алгоритмы, не так ли? ![]() |
|||
|
||||
Alexeis |
|
|||
![]() Амеба ![]() Профиль Группа: Админ Сообщений: 11743 Регистрация: 12.10.2005 Где: Зеленоград Репутация: 14 Всего: 459 |
Ну это уж кто как хочет. Меня интересует в как быстро сработает алгоритм и вернет, результат, а не как быстро загрузиться и проинициализируется программа, перед выполнением нужных мне действий. Хотя в задаче про строки время работы алгоритма будет исчисляется десятками секунд, потому погрешность будет невелика. Но вот если разница будет 2-5%, то достоверность таких опытов будет нулевая. -------------------- Vit вечная память. Обсуждение действий администрации форума производятся только в этом форуме гениальность идеи состоит в том, что ее невозможно придумать |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
названия категорий high, middle и low хотя это только на вывод влияет ![]() Это сообщение отредактировал(а) MAKCim - 26.1.2008, 18:53 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Void |
|
||||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
MAKCim, погоди, кто сказал, что имена категорий фиксированы? Из
Мы должны получить
, но никак не
Боюсь, низачот ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||||
|
|||||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
где написано обратное? ![]() цифры тоже могут отсутствовать? если надо, могу исправить Это сообщение отредактировал(а) MAKCim - 26.1.2008, 19:11 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
ТЗ чертовски неформальное. Теперь понял логику, но, признаться, мне бы в жизни не пришло в голову так его интерпретировать ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
а что, я как-то по-особенному проитерпретировал? -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
Ты принял, что названия категорий, подкатегорий и имена элементов — не произвольные строки, а имеют вид "%s%d", где первая часть фиксирована для всех элементов. Я лично для себя сразу решил, что названия вида «Категория1;Подкатегория1;Элемент1» использовались только как пример, чтобы не утруждать себя придумыванием разнообразных строк. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
Void,
вообщем надо уточнить, что имелось в виду сейчас у меня программа работает очень быстро вот тестовый пример
C2D, 1.86Ghz, Linux (2.6.18, x86-64) -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
MAKCim, естественно, что все строки во входе произвольные
![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
Пусть archimed7592 прояснит ситуацию, он засветился в оригинальном топике
![]() С произвольными строками по любому интереснее. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
сгенерируй правильный входной файл и выходной так будет проще писАть -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 4 Всего: 164 |
Ты неправ. Гугл ето ВСЕ С++. Кроме ГУИ. --------------------
|
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
-------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Ишь ты хитрый какой ![]() ![]() ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
блин, за...лся писать
![]() вот
разделитель определен через #define как DELIMITER Добавлено @ 22:28 archimed7592, тест давай ![]() Добавлено @ 22:32 сортировка пузырьковая было влом QuickSort писать, а стандартный qsort() со списками не работает Это сообщение отредактировал(а) MAKCim - 27.1.2008, 11:32 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
chipset |
|
|||
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 4071 Регистрация: 11.1.2003 Где: Seattle, US Репутация: 4 Всего: 164 |
Ну а что там по твоему? Си шарп? ЫЫЫ, может Java? )))) --------------------
|
|||
|
||||
MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
блин, пока вас дождешься
вот генератор
вот тестовый пример вот результаты на моей системе
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Чипс, мой тебе совет: прослушай ту лекцию, на которую я давал ссылку, чтобы беседа получалась хоть немного конструктивной... Угу?
Они используют некоторый ф-циональный язык, который они написали сами. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
archimed7592,
где вариант на С++? ![]() ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
chipset, вот, можешь почитать Алёнкин конспект: http://alenacpp.blogspot.com/2007/02/blog-post_20.html .
Макс, ой, не сегодня... Не до этого, к сожалению. Может быть завтра руки дойдут. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: нет Всего: 110 |
вот небольшой набросок со стороны С++:
с сортировкой некрасиво получилось (копирование вектора), но на скорую руку, наверное, и так пойдёт да и расширяемость не очень будет, если количество категорий будет другое или переменное сравнивать, наверное, лучше на той же машине и системе, что и представленный C-шный вариант Это сообщение отредактировал(а) maxim1000 - 27.1.2008, 01:16 -------------------- qqq |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
Чего-то я в итоге не понял - вы решили тестить реализацию на си и реализацию на C++ "без использования фич C++" ![]() Добавлено через 5 минут и 32 секунды Банально - сет или мультисет (в зависимости от условий задачи - лень особо читать :/ ) вместо вектора. |
|||
|
||||
maxim1000 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: нет Всего: 110 |
про set думал, но не хотелось объединять одинаковые значения в вот про multiset как-то не подумал... исправленный вариант:
-------------------- qqq |
||||
|
|||||
Void |
|
||||||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
MAKCim, быть может я чего-то не понимаю, но твоя программа ТЗ не соответствует.
Даю на вход:
Получаю на выходе:
Во-первых, категории надо объединять, во-вторых, кто зохавал четвёртый элемент? Кроме того, если DELIMITER заменить на точку с запятой и соответственно изменить приведённые строки, то получится другой результат, но опять неправильный. Вот альтернативный скрипт генерации исходных данных, с немного более реальными характеристиками:
-------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
||||||
|
|||||||
MAKCim |
|
||||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
господа
либо баг у меня, либо в libc -> fgets() вот часть кода рушится с SIGSEGV на 927 итерации факт в том, что на этой итерации fgets() не возвращает NULL (якобы строка прочитана) но при работе с pointer идет SIGSEGV я исхожу из того, что fgets() должна записать в выходной буфер в конце \n и \0 (во всяком случае так в мане написано) что не так? вполне возможно, что не прав я, но не пойму где
Добавлено через 4 минуты и 55 секунд
еще раз исходник скомпилируй
измени DELIMITER в исходном коде Добавлено через 8 минут и 8 секунд Void, у меня на выходе
Это сообщение отредактировал(а) MAKCim - 27.1.2008, 11:45 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||||
|
|||||||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
![]()
Я это и делал. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
Void,
вот код
на твой пример он выводит правильные результаты -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
MAKCim, всё, понял. Проблема в gcc. С -O2 у меня результат неверный, с -O0 всё нормально.
Мда. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
O_O что за х.... -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Оу, ребят, можете считать, что тройка cat;subcat;entry уникальна и, если она встречается дважды(или большее кол-во раз), то выводить её нужно единожды. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
maxim1000 |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: нет Всего: 110 |
ну тогда так ![]()
-------------------- qqq |
||||
|
|||||
mr.DUDA |
|
|||
![]() 3D-маньяк ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 8244 Регистрация: 27.7.2003 Где: город-герой Минск Репутация: 4 Всего: 232 |
Эммм.. а когда будут результаты бенчмарков ?
![]() -------------------- ![]() |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
maxim1000, в таком случае у тебя сортировка при любом раскладе отрабатывает... Т.е. в тестах без сортировки твой вариант теоретически "сольёт"...
Когда появится время, чтобы затестить решения(ещё бы найти время, чтобы своё решение навоять)... ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: нет Всего: 110 |
про какую сортировку речь? если я не ошибаюсь, сортировка нужна на всех этапах для быстрого поиска - ведь перед добавлением очередного элемента на любой уровень нужно найти его, если он вдруг уже есть -------------------- qqq |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
archimed7592,
ты это затеял так что уж изволь ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
archimed7592 |
|
||||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Эмм, Макс, это не совсем Си ![]() Добавлено через 5 минут и 25 секунд Каюсь, каюсь, время было, но было жутко лень ![]() Вот мой вариант:
Сча попытаюсь отрефакторить Максовский код, чтобы он компилился как Сишный и, соответственно, затестить. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
||||
|
|||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Вот подправленный вариант Макса из этого поста:
На входных данных, сгенерённых скриптом из этого поста - AV на 121 строке... -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Моё vs решение maxim1000. Замечу, что у maxim1000 нет разницы между необходимостью сортировки и её отсутствием, потому у него результаты одинаковые.
archimed7592/nosort | archimed7592/sort | maxim1000/nosort | maxim1000/sort data #1 1890 | 1703 | 2031 | 2031 data #2 2390 | 2203 | 2531 | 2531 Как можно заметить, толку от моей попытки соптимизировать ненадобность сортировки не вышло, точнее получился антитолк ![]() Хотя, если тэстить на том файлике в котором будет много категорий/подкатегорий/элементов, у которых начало будет одинаковым(отличие только в конце строки - к примеру, порядковый номер), то, думаю, толк от хэширования выйдет. -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
maxim1000 |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 3334 Регистрация: 11.1.2003 Где: Киев Репутация: нет Всего: 110 |
да... про хеш надо было мне подумать
![]() -------------------- qqq |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
что здесь не С? Добавлено через 1 минуту и 37 секунд а boost-ом разве можно пользоваться? по-моему, только стандартная библиотека а то я тоже могу какую-нибудь библиотеку скачать ![]() Добавлено через 6 минут и 15 секунд
я в курсе у меня на 927 грешу на реализацию fgets потому как на соответствующей итерации она возвращает хз какую строку ![]() Добавлено через 7 минут и 45 секунд archimed7592, ты файлик мой сишным компилятором компилил? test2.cpp меня смущает ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
В Си можно объявлять/определять сущности только после открывающейся фигурной скобки. Вроде как... Макс, я тебя умоляю. foreach и call_traits я могу убрать, а hash и mpl::if реализовать "на месте" ![]() ![]() Ну это там была только стандартная, ибо у Дельфистов один аргумент: "вы без буста - ничто". У нас же задача не доказать друг другу, что один язык круче другого(и так очевидно, что Си - подмножество С++), а сравнить скорость, потому я предположил, что бустом воспользоваться можно ![]() С другой стороны, если следовать букве задания, то нельзя использовать NTBS ![]() Я не против, только, чтобы простота установки была сравнима с бустом: скачал, поместил в include-paths и радуешься ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
MAKCim |
|
||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
я такого правила не знаю хотя может я не прав тыкните носом в стандарт ![]()
C и NTBS понятия неразделимые ![]() Добавлено через 2 минуты и 52 секунды ты какой компиялтор для моего кода использовал? судя по всему VS, и к тому же не С, да? ![]() -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||
|
|||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Угу. Это коммент автосгенерённый. Потом я его переименовал. Откуда думаешь я тебе на "не совсем Си" выдумал? Компилятор ругался ![]() Ты чего? Ладно, если бы это была одна реализация(glibc) - дык это уже MSVC и, скорее, нужно грешить не на библиотеку ;). Минуточку... ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
В общем, в С99 уже можно(насколько я понял), но MSVC-2005 об этом не в курсе ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
MAKCim |
|
||||||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
да, 5 баллов тому, кто найдет ошибку я уже нашел ![]() Добавлено через 2 минуты и 17 секунд
чего-то я непонял но у меня
замечательно компилируется без скобок ANSI это никак не C99 -------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
||||||
|
|||||||
archimed7592 |
|
|||
![]() Архимед ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2531 Регистрация: 12.6.2004 Где: Moscow Репутация: 2 Всего: 93 |
Ты Сишник - тебе виднее ![]() Ага, нам не забудь показать ![]() -------------------- If you have an apple and I have an apple and we exchange apples then you and I will still each have one apple. But if you have an idea and I have an idea and we exchange these ideas, then each of us will have two ideas. © George Bernard Shaw |
|||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
archimed7592, мне лень (и почти нет места на диске
![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
-pedantic добавь. получишь что-то типа a.c:7: warning: ISO C90 forbids mixed declarations and code -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
Mayk |
|
||||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
Ещё одна си-шная реализация против реализации maxim1000 ( по сравнению с Архимедом в ней букв мало, в варианте MAKcimа sigsegv ).
а теперь цифры(порежу всё что не real)
Итого. Вариант maxim1000 рулит. Во всех остальных букв много. В топку. с сортировкой сишный вариант ухудшается до 0.0056-0.0080[квотить не буду, лень] секунд. PS. заменил в maxim1000'вском варианте map'ы на unordered_map'ы. результаты ухудшились до ~0.0014. Это сообщение отредактировал(а) Mayk - 5.2.2008, 18:58 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
||||
|
|||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
Mayk, входных данных побольше бы надо, миллисекунды опасно приближаются к пределам статистической погрешности.
По хорошему, всегда надо делать серию и давать не только среднее, но и стандартное отклонение. Zed Shaw по этому поводу эмоционально писал. -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
Когда речь идёт о 0.0021 против 0.0009 в течение нескольких запусков --- не думаю что погрешности здесь исказят лидера. А ждать пока они отработают на миллион записей мне лень. 1000 записей весьма большая n. К тому же при увеличении n мой сишный код начнёт ещё больше тормозить из-за квардатичнго построение строк через string_to_hash'а (кстати, привет profiler). Переписывать во что-то более быстрое не получится не раздувая код(раздувать код -- лень). Сишный по компактности с STL'ным точно не сравнится. вообщем моё имхо --- фффтопку Варианты с >100 строками. Это сообщение отредактировал(а) Mayk - 5.2.2008, 19:24 -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
Любитель |
|
|||
Программист-романтик ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3645 Регистрация: 21.5.2005 Где: Воронеж Репутация: 5 Всего: 92 |
||||
|
||||
Void |
|
|||
![]() λcat.lolcat ![]() ![]() ![]() ![]() Профиль Группа: Участник Клуба Сообщений: 2206 Регистрация: 16.11.2004 Где: Zürich Репутация: 11 Всего: 173 |
В Boost 1.33, который в пакетах, нет foreach, поэтому вариант с бустом по совету Mayk пошёл в топку. Поскольку решили, что выруливает вариант maxim1000, буду сравнивать с ним.
GCC 4.1.2, Python 2.5.1, Athlon 64 3200+ Из флагов gcc только -O2. Входной файл на 100 тыс. элементов, ~2,5 Мб. Вывод в /dev/null. Серии по 12 запусков, первый не учитывается. C++ (STL): mean = 0.93, stddev = 0.04 Python: mean = 0.92, stddev = 0.09 Python (sort): mean = 1.11, stddev = 0.02 Итак, мой прогноз оправдался в точности:
Если в варианте C++ использовать unordered_map/hash_map, вероятно, будет прибавка в скорости, но вряд ли более чем двукратная. Та-ак, на чём бы ещё написать этот тестик ![]() -------------------- “Coming back to where you started is not the same as never leaving.” — Terry Pratchett |
|||
|
||||
MAKCim |
|
|||
![]() Воін дZэна ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5644 Регистрация: 10.12.2005 Где: Менск, РБ Репутация: 8 Всего: 207 |
Mayk,
сортировочку у тебя можно в qsort() запихнуть будет быстрее в add_entry() вызывать постоянно malloc()...не слишком быстро Добавлено через 12 минут и 38 секунд вот мой исправленный вариант
-------------------- Ах, у елі, ах, у ёлкі, ах, у елі злыя волкі © |
|||
|
||||
Mayk |
|
|||
![]() ^аВаТаР^ сообщение>> ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 2616 Регистрация: 22.5.2005 Где: за границей разум а Репутация: 2 Всего: 134 |
Про сортировку соглашусь. Самое смешное что в начале так и было, но я зачем-то убрал ![]() А на add_entry профайлер не советует обращать вниманин. По идее нужно string_to_hash чем-то нормальным заменить. Ибо n раз линейный поиск отстой ещё тот. -------------------- Здесь был кролик. Но его убили. Человеки < кроликов, йа считаю. |
|||
|
||||
![]() ![]() ![]() |
Правила ведения Религиозных войн | |
|
1. Уважайте собеседника 2. Собеседник != враг 3. Старайтесь воздерживаться от тем вида "Windows Rulez" или "Linux Rulez" С уважением, Smartov. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Религиозные войны | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |