Уведомления

Группа в Telegram: @pythonsu

#1 Фев. 2, 2011 13:21:01

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Ускорение обработки двоичного файла

И как оно поможет, если у записей есть только терминатор - и нет длины?
Все равно нужно сканировать поток.



Офлайн

#2 Фев. 2, 2011 14:32:55

asv13
От:
Зарегистрирован: 2007-01-22
Сообщения: 130
Репутация: +  0  -
Профиль   Отправить e-mail  

Ускорение обработки двоичного файла

Андрей Светлов
И как оно поможет, если у записей есть только терминатор - и нет длины?
Все равно нужно сканировать поток.
Может я чего-то недопонял, но якобы имеется файл порядка 500 Мб, и длина каждой записи как раз расстояние между терминаторами ?

пример:

>>> from numpy import *
>>> a = memmap(r'c:\kam\w3\T3\W3_RT3.UNRST', uint16)
>>> a.shape
(138605462,)
>>> c = where(a==13)
>>> c[0][:10]
memmap([ 350427, 394751, 1280665, 1362469, 1765227, 2210903, 2253069,
2272839, 2717707, 2764369])



Отредактировано (Фев. 2, 2011 15:16:57)

Офлайн

#3 Фев. 2, 2011 14:49:07

Lexander
От:
Зарегистрирован: 2008-09-19
Сообщения: 1139
Репутация: +  33  -
Профиль   Отправить e-mail  

Ускорение обработки двоичного файла

erl
теперь из массива не могу нормальные данные достать, все перековеркалось.
В файле не латиница есть? Может быть просто с кодировками проблема, а не с массивом.
В том смысле, что полученные в массив символы (или часть их) нужно трактовать как строки в какой-то определенной кодировке.



Отредактировано (Фев. 2, 2011 14:51:16)

Офлайн

#4 Фев. 3, 2011 10:37:16

erl
Зарегистрирован: 2011-01-30
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Ускорение обработки двоичного файла

>>> from numpy import *
>>> a = memmap(r'c:\kam\w3\T3\W3_RT3.UNRST', uint16)
>>> a.shape
(138605462,)
>>> c = where(a==13)
>>> c[0][:10]
memmap([ 350427, 394751, 1280665, 1362469, 1765227, 2210903, 2253069,
2272839, 2717707, 2764369])
Ни чего из примера не понял, обясните словами , плиз, если не затруднит …



Офлайн

#5 Фев. 3, 2011 10:39:29

erl
Зарегистрирован: 2011-01-30
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Ускорение обработки двоичного файла

Lexander
erl
теперь из массива не могу нормальные данные достать, все перековеркалось.
В файле не латиница есть? Может быть просто с кодировками проблема, а не с массивом.
В том смысле, что полученные в массив символы (или часть их) нужно трактовать как строки в какой-то определенной кодировке.
Да скорее всего с кодировками, но так все перековеркона, что не возможно разобраться что искать…



Офлайн

#6 Фев. 3, 2011 13:00:58

asv13
От:
Зарегистрирован: 2007-01-22
Сообщения: 130
Репутация: +  0  -
Профиль   Отправить e-mail  

Ускорение обработки двоичного файла

erl
Ни чего из примера не понял, обясните словами , плиз, если не затруднит …
Это пример того как в файле порядка 200 Мб вычислены позиции всех “меток” со значением =13. Довольно быстро, даже на моем ноуте. Просто пример, вашими условиями я не располагаю.



Офлайн

#7 Фев. 4, 2011 10:45:04

Isem
От:
Зарегистрирован: 2010-08-27
Сообщения: 447
Репутация: +  7  -
Профиль   Отправить e-mail  

Ускорение обработки двоичного файла

asv13
Это пример того как в файле порядка 200 Мб вычислены позиции всех “меток” со значением =13. Довольно быстро, даже на моем ноуте. Просто пример, вашими условиями я не располагаю.
А если метка находится на нечетной позиции? uint16 уже не прокатит.



Отредактировано (Фев. 4, 2011 10:45:44)

Офлайн

#8 Фев. 8, 2011 09:58:25

erl
Зарегистрирован: 2011-01-30
Сообщения: 42
Репутация: +  0  -
Профиль   Отправить e-mail  

Ускорение обработки двоичного файла

Здравствуйте
А если конец записи обозначается двумя байтами 0xff и 0x32 как быть длинна ведь произвольна, у меня получается так что максимальное время за которое я просто прохожу файл с выводом в другой файл выбранных записей 11 минут.

Если кто нибудь скажет как ускорить буду благодарен. Суть уже стоит в том, что сам по себе python, если он не умеет выполнять быстрее или я не умею написать более быстрый алгоритм, то вроде как уходим с разработкой на яву :-), а честное слово не хочется, это поновой изучать язык… значит тратить время, при чем личное … поможите плиз, если это возможно.



Отредактировано (Фев. 8, 2011 09:59:53)

Офлайн

#9 Фев. 8, 2011 10:10:01

asv13
От:
Зарегистрирован: 2007-01-22
Сообщения: 130
Репутация: +  0  -
Профиль   Отправить e-mail  

Ускорение обработки двоичного файла

erl
Если кто нибудь скажет как ускорить буду благодарен.
Сам скрипт не покажете ?
Я бы еще pypy попробовал.



Офлайн

#10 Фев. 8, 2011 10:15:11

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

Ускорение обработки двоичного файла

Не нужен здесь pypy и Ява не правит в автоматическом режиме кривые руки.
Кстати, а характерная длина записи какая? Ну там сотня-другая байт или они обычно мегабайтные?
Да, и код - очень помогает выявить проблему.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version