BredoGen.

BredoGen.
Рейтинг
98
Регистрация
19.10.2009
Cell:
Аха. Кто вам такое рассказал? Бабушка или одноклассники?:)

- Ты любишь долма?
- Нет.
- Это потому, что у вас ее не умеют готовить (© Мимино)



Вопрос из разряда "Что лучше купить - BMW или Mersedes?". На него нет прямого ответа.
Возможности языков примерно одинаковы. В обиходе, считается, что DELPHI более учебный (а, значит, более легкий в освоении), а С++ - более "промышленный", а, следовательно, якобы "более перспективный".

Достаточно знать очень хорошо любой из этих двух языков, чтобы уметь писать программы. Хотя, не забывайте, что только одного языка мало. Обычно, в комплекте еще бывает нужно SQL, ASP и т.д.

Есть сторонники как Delphi (пасквилянты), так и C++ (насильники). Их спор будет вечен.
Дело вкуса, привычки и сложившихся корпоративных стандартов (если на работе).

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

Будущим и настоящим родителям тоже лучше знать DELPHI, чем C. Нужно же помогать нерадивому чаду решать задачки :)

ТС, но вы можете и монетку подбросить.

О да, одинаковы. А на кроссплатформенность забить большой болт и даже не вспоминать о ней?

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

Вообще, сравнивать С(++) и дельфи неприлично :)

NasMnogo-Mbl-Sila:
Что лучше для начинающего?

Delphi или C++?

C++.

Он был, есть и будет. А все остальное приходит и уходит.

Могу посоветовать Шилдта.

tipagraf:
Доброго времени, уважаемый.
извиняюсь за нубский вопрос, подскажи пожалуйста как пользоваться этим скриптиком, или где можно почитать руководство...🚬 Заранее Благодарен за ответ.

Хм, почитать можно про командную строку :)

Это обыкновенная консольная программа под винду. Должна запускаться даже двойным кликом (unique.exe) или из под командной строки (win+R => cmd)

BredoGen. добавил 07.12.2010 в 18:57

Может на неделе сделаю графический интерфейс с плюшками, а может со временем вырастет до комбайна для работы с ключами...

mfl:
пример:
имеется строка вида: (1+2)*3
необходимо преобразовать её в математическое выражение и выполнить.
Есть ли решения данной задачи без использования eval()?

Спасибо.

Стандартными средствами - никак.

Можете поискать парсер математических выражений на php, если очень нужно обойтись без eval();

bmwm3:
ну так если просто разбить на части то нужно будет сравнивать строки из разнх частей, а в моём случае только внутри каждой части )

или мы об одном и том же )

Не сразу втыкнул, что ты имеешь в виду. Об одном и том же, в принципе. Но гемерно это все.

Если так рассчитать, то для обработки 300кк строк (где-то 10гб с лишним), нужно чуть более гига оперативы для хранения хешей, что не проблема для любого десктопа...

Но при таких объемах, чую, хеш начнет иногда повторяться, хоть это и не особо критично.

alex1113:
Учи уроки двоечник!
Беру свои слова обратно! Смотря как разбить!

Сформулировал мысль в голове => Обдумал => [Сформулировал конкретнее|Передумал] => Обдумал еще лучше => [Напечатал|Передумал] => Нажал "Ответить".

На стенку, около рабочего места.

BredoGen. добавил 07.12.2010 в 11:15

terramona:
конечно быстрее, но только в случае с хэшами
иначе её много надо
1 кей это ~20-25 символов
80 лям * 20 ~ 2гига

Это если ключевики из символов кодируемыми одним байтом. Т.е юникод кириллица идет лесом и будет жрать целых 2 байта за символ... А это уже ~4гб, что уже дохрена :)

bmwm3:
хз, по моему если отсортировать по алфавиту(или даже к примеру первым 3 символам), кол. символов в строке, сохранить в разные файлы, то можно хоть 10гб провернуть ))

Тогда легче уже разбить файл на части и нормально обработать каждый (:

Ограничением будет только размер жесткого диска.

firacet:
Еще вариант, сохранять строку в массив но не как значение а как ключь. тогда в памяти будут только уникальные строки.

Строки занимают слишком много памяти, их лучше вообще не хранить.

Мой вариант:

Версия для винды: http://dl.dropbox.com/u/16333142/unique.tar.gz

Для Ъ & линуксоидов (исходники): http://dl.dropbox.com/u/16333142/unique_src.tar.gz

В памяти хранится контейнер с числовыми хешами. Т.е теоретически каждая строка [хеш каждой строки] будет занимать 4 байта. В реальности все не так хорошо и для обработки 80кк понадобится чуть больше.

По скорости вроде рвет всех и вся. Удалось скормить 26кк (900мб), как будет вести с более весомыми данными (и вообще на винде) - не знаю.

ApocX:
Ну сохрани массив хэшей от 80кк строк в памяти...

Как вариант - резать файл на более мелкие, и тогда уже более реально его обработать.

ТС, сколько весит файл с 80кк ключами? А то я даже представить не могу...


bredogen@debian:~/Работа/unique$ du file.txt
922104 file.txt
bredogen@debian:~/Работа/unique$ wc -l file.txt
25994075 file.txt
bredogen@debian:~/Работа/unique$ ./unique
Path to file: file.txt
Save to: my.txt

Finished with 803047 unique lines! Time elapsed: 99775ms

512RAM

Файл размером в 900мб и 26кк строк спокойно поместился и обработался за 99секунд. У меня все работает, ЧЯДНТ? (:

80кк будет весить около 3гб... Как минимум 2гб оперативной памяти нужно будет, если там много уникальных строк.

terramona:
построчно смысл теряется
считаешь одну строку, а с чем сравнивать её будешь?
на след.строке предыдущая уже забыта, иначе теряется смысл слова "построчно"

Хранишь массив с хешами в памяти. Читаешь прострочно и сравниваешь. В чем проблема?

Нашел свой вариант на C++.

Консольная программа. Файл в 1кк строк (взят с newox.ru/free_base.php) обрабатывает в 3 раза быстрее варианта cat & sort & uniq.

Проверял на загруженной машине с 512RAM, камень селероновский. То есть понятно, что работать может намного быстрее.

Если еще нужно - могу скомпилить под винду или даже в приличный гуй обернуть.

BredoGen. добавил 06.12.2010 в 14:13

Как поведет себя с 80кк - без понятия.

Ezekiel:
cat source.txt | sort | uniq > result.txt

Это именно оно.
Если у ТСа Винда - выход есть. GNU CoreUtils Win32

Винда загнется еще на cat, с большей долей вероятности :)

Всего: 556