Вопрос из разряда "Что лучше купить - BMW или Mersedes?". На него нет прямого ответа.
Возможности языков примерно одинаковы. В обиходе, считается, что DELPHI более учебный (а, значит, более легкий в освоении), а С++ - более "промышленный", а, следовательно, якобы "более перспективный".
Достаточно знать очень хорошо любой из этих двух языков, чтобы уметь писать программы. Хотя, не забывайте, что только одного языка мало. Обычно, в комплекте еще бывает нужно SQL, ASP и т.д.
Есть сторонники как Delphi (пасквилянты), так и C++ (насильники). Их спор будет вечен.
Дело вкуса, привычки и сложившихся корпоративных стандартов (если на работе).
Лично мне больше нравится Delphi. Для начинающих он лучше - там компилятор сразу обрубит сомнительные алгоритмы (приведение типов, например).
Будущим и настоящим родителям тоже лучше знать DELPHI, чем 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гб провернуть ))
Тогда легче уже разбить файл на части и нормально обработать каждый (:
В памяти хранится контейнер с числовыми хешами. Т.е теоретически каждая строка [хеш каждой строки] будет занимать 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: построчно смысл теряется
считаешь одну строку, а с чем сравнивать её будешь?
на след.строке предыдущая уже забыта, иначе теряется смысл слова "построчно"
Хранишь массив с хешами в памяти. Читаешь прострочно и сравниваешь. В чем проблема?
Аха. Кто вам такое рассказал? Бабушка или одноклассники?:)
- Ты любишь долма?
- Нет.
- Это потому, что у вас ее не умеют готовить (© Мимино)
Вопрос из разряда "Что лучше купить - BMW или Mersedes?". На него нет прямого ответа.
Возможности языков примерно одинаковы. В обиходе, считается, что DELPHI более учебный (а, значит, более легкий в освоении), а С++ - более "промышленный", а, следовательно, якобы "более перспективный".
Достаточно знать очень хорошо любой из этих двух языков, чтобы уметь писать программы. Хотя, не забывайте, что только одного языка мало. Обычно, в комплекте еще бывает нужно SQL, ASP и т.д.
Есть сторонники как Delphi (пасквилянты), так и C++ (насильники). Их спор будет вечен.
Дело вкуса, привычки и сложившихся корпоративных стандартов (если на работе).
Лично мне больше нравится Delphi. Для начинающих он лучше - там компилятор сразу обрубит сомнительные алгоритмы (приведение типов, например).
Будущим и настоящим родителям тоже лучше знать DELPHI, чем C. Нужно же помогать нерадивому чаду решать задачки :)
ТС, но вы можете и монетку подбросить.
О да, одинаковы. А на кроссплатформенность забить большой болт и даже не вспоминать о ней?
Дельфи не нужен вообще никому, кроме тех, кому нужно развивать старые проекты на этом языке или тем, кто просто привык и переходить на что-то адекватное нет желания. Использовать этот труп для чего-либо нового, а тем более осваивать этот язык - не имеет никакого смысла.
Вообще, сравнивать С(++) и дельфи неприлично :)
Что лучше для начинающего?
Delphi или C++?
C++.
Он был, есть и будет. А все остальное приходит и уходит.
Могу посоветовать Шилдта.
Доброго времени, уважаемый.
извиняюсь за нубский вопрос, подскажи пожалуйста как пользоваться этим скриптиком, или где можно почитать руководство...🚬 Заранее Благодарен за ответ.
Хм, почитать можно про командную строку :)
Это обыкновенная консольная программа под винду. Должна запускаться даже двойным кликом (unique.exe) или из под командной строки (win+R => cmd)
BredoGen. добавил 07.12.2010 в 18:57
Может на неделе сделаю графический интерфейс с плюшками, а может со временем вырастет до комбайна для работы с ключами...
пример:
имеется строка вида: (1+2)*3
необходимо преобразовать её в математическое выражение и выполнить.
Есть ли решения данной задачи без использования eval()?
Спасибо.
Стандартными средствами - никак.
Можете поискать парсер математических выражений на php, если очень нужно обойтись без eval();
ну так если просто разбить на части то нужно будет сравнивать строки из разнх частей, а в моём случае только внутри каждой части )
или мы об одном и том же )
Не сразу втыкнул, что ты имеешь в виду. Об одном и том же, в принципе. Но гемерно это все.
Если так рассчитать, то для обработки 300кк строк (где-то 10гб с лишним), нужно чуть более гига оперативы для хранения хешей, что не проблема для любого десктопа...
Но при таких объемах, чую, хеш начнет иногда повторяться, хоть это и не особо критично.
Учи уроки двоечник!
Беру свои слова обратно! Смотря как разбить!
Сформулировал мысль в голове => Обдумал => [Сформулировал конкретнее|Передумал] => Обдумал еще лучше => [Напечатал|Передумал] => Нажал "Ответить".
На стенку, около рабочего места.
BredoGen. добавил 07.12.2010 в 11:15
конечно быстрее, но только в случае с хэшами
иначе её много надо
1 кей это ~20-25 символов
80 лям * 20 ~ 2гига
Это если ключевики из символов кодируемыми одним байтом. Т.е юникод кириллица идет лесом и будет жрать целых 2 байта за символ... А это уже ~4гб, что уже дохрена :)
хз, по моему если отсортировать по алфавиту(или даже к примеру первым 3 символам), кол. символов в строке, сохранить в разные файлы, то можно хоть 10гб провернуть ))
Тогда легче уже разбить файл на части и нормально обработать каждый (:
Ограничением будет только размер жесткого диска.
Еще вариант, сохранять строку в массив но не как значение а как ключь. тогда в памяти будут только уникальные строки.
Строки занимают слишком много памяти, их лучше вообще не хранить.
Мой вариант:
Версия для винды: http://dl.dropbox.com/u/16333142/unique.tar.gz
Для Ъ & линуксоидов (исходники): http://dl.dropbox.com/u/16333142/unique_src.tar.gz
В памяти хранится контейнер с числовыми хешами. Т.е теоретически каждая строка [хеш каждой строки] будет занимать 4 байта. В реальности все не так хорошо и для обработки 80кк понадобится чуть больше.
По скорости вроде рвет всех и вся. Удалось скормить 26кк (900мб), как будет вести с более весомыми данными (и вообще на винде) - не знаю.
Ну сохрани массив хэшей от 80кк строк в памяти...
Как вариант - резать файл на более мелкие, и тогда уже более реально его обработать.
ТС, сколько весит файл с 80кк ключами? А то я даже представить не могу...
512RAM
Файл размером в 900мб и 26кк строк спокойно поместился и обработался за 99секунд. У меня все работает, ЧЯДНТ? (:
80кк будет весить около 3гб... Как минимум 2гб оперативной памяти нужно будет, если там много уникальных строк.
построчно смысл теряется
считаешь одну строку, а с чем сравнивать её будешь?
на след.строке предыдущая уже забыта, иначе теряется смысл слова "построчно"
Хранишь массив с хешами в памяти. Читаешь прострочно и сравниваешь. В чем проблема?
Нашел свой вариант на C++.
Консольная программа. Файл в 1кк строк (взят с newox.ru/free_base.php) обрабатывает в 3 раза быстрее варианта cat & sort & uniq.
Проверял на загруженной машине с 512RAM, камень селероновский. То есть понятно, что работать может намного быстрее.
Если еще нужно - могу скомпилить под винду или даже в приличный гуй обернуть.
BredoGen. добавил 06.12.2010 в 14:13
Как поведет себя с 80кк - без понятия.
Это именно оно.
Если у ТСа Винда - выход есть. GNU CoreUtils Win32
Винда загнется еще на cat, с большей долей вероятности :)