|
|
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, гуру. Я пишу электронный англо-русский словарь на Visual Studio 2005, C++ , для Smart Device, Pocket PC 2003 (ARMV4), Use MFC in a Static Library Помогите пожалуйста советами. На Pocket PC мало памяти. Как мне лучше организовать доступ к словам? Как-то прицепить .mdb? Или сделать 26 файлов: a.txt для всех слов начинающихся с a b.txt для всех слов начинающихся с b и т. д. и попробовать открывать их с помощью CFile? Буду черезвычайно признателен ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2006, 07:37 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
Нашел Sql Server Mobile 2005 http://www.hpc.ru/soft/data/14143/SqlServerMobile2005.zip Никогда не соединялся с БД из C++ с MFC. Не могут ли спецы мне подсказать? Есть опыт работы с БД на ASP, PHP, Delphi 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2006, 09:32 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
сделать бор - структуру ( то же что и многомерный 27*27*27...) массив, для экономии памяти по первым 2-4 буквам. поиск будет очень быстрым. на жестком так же хранить и не парится. аффтопитезь ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.10.2006, 13:12 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
вполне можно в dll засунуть /topic/275636&hl=%ea%ee%ed%f1%f2%f0%f3%ea%f2%ee%f0 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2006, 08:53 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
Я бы создал массив указателей, сортированый по алфавиту, а в другом массиве лежали бы слова и дефиниции. Если словарь не слово-дефиниция, а слово - слово[,слово], то можно русские слова организовать в массив. При этом произойдёт экономия за счёт того, что дублироваться будут только ссылки. typedef struct Dictionary{ char *eng; char *ru; }Dictionary; vecor<Dictionary> dictOrderedByEng; vector<char> EnglishWords; // Т.е. они лежат одной динной строкой с 0 в массиве символов. vector<char*> RussianReferences; vector<char> RussianWords; Дальнейшая упаковка возможна за счёт того, что в английском алфавите 26 символов, т.е. их можно паковать в 5 бит, а в русском - 33 - 6 бит. При этом 0 - один из символов этого же алфавита. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2006, 14:37 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
у меня лежит как Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. и переводы Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. поиск в массиве идет по хэшу - скорость достаточно высокая особенно на x64 платформе ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2006, 21:19 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
8 байтный хэш длинне ссылки и думаю, длиннее, чем среднее английское слово. Поиск можно и нужно использовать двоичный, так что максимальное количество хитов будет где-то Log2(кол-во слов) +1? что явно не много. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2006, 21:59 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
nikname8 байтный хэш длинне ссылки и думаю, длиннее, чем среднее английское слово. не мелочитесь ШУра (С) стындно батенька в наш век петобайтов на биты размениваться :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2006, 23:32 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
Admin_Vlad... 1. Откуда цифра - 2 Мб? Это размер словаря в виде чистого текста? Будет-ли словарь расти? 2. Как вообще организован диск на PocketPC ? Там есть деление на опертивную память и хранилище, или всё вместе? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.10.2006, 23:44 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
Lepsik nikname8 байтный хэш длинне ссылки и думаю, длиннее, чем среднее английское слово. не мелочитесь ШУра (С) стындно батенька в наш век петобайтов на биты размениваться :) Вроде речь шла о КПК? Кстати, интересно - у кого-нибудь были сравнения эффективности хэша и двоичного поиска на одном и том же наборе данных? Меня терзают смутные сомнения. Дело в том, что сейчас словарь действительно запросто поместится в оперативную память. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 11:08 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
niknameДело в том, что сейчас словарь действительно запросто поместится в оперативную память.а если добавить acrobat reader, wmp и оперу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 12:19 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
Каталоги и карты памяти в iPAQ В "My Device" находятся \Application Data\ \ConnMgr\ \iPAQ File Store\ \iPAQ ROM\ \Mini-SD\ \My Documents\ \Ozi Explorer\ \profiles\ \Program Files\ \SD Card\ \Temp\ \Windows\ У меня есть текстовый файл на 2Mb в котором нечетыми идут английские слова, четными их перевод на русском. Есть такие же файлы для испанского, итальянского, немецкого, французкого, но размер их поменьше. Начать думаю только с английского словарика с жестко заданным количеством слов, а затем развить в мультиязычный с добавлением новых слов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 12:39 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
Памяти для программ свободно 8,65Mb Максимальный размер для object store 256MB Но меня терзают смутные сомнения, что если я загружу в структуру 2Mb текстовых данных полученный 2Mb exe'шник будет запускаться под WinCE ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 31.10.2006, 12:50 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
Admin_VladПамяти для программ свободно 8,65Mb Максимальный размер для object store 256MB Но меня терзают смутные сомнения, что если я загружу в структуру 2Mb текстовых данных полученный 2Mb exe'шник будет запускаться под WinCE Я думаю, учитывая характер работы пользователя со "словарем" (редкие операции поиска, еще реже - вставки), можно вполне использовать текстовые файлы. Т.е. - ваш второй вариант (26 файлов с доступом через CFile). Если надо будет чуть-чуть ускорить поиск, можно сделать 26 каталогов (по первой букве) и в каждом 26 файлов (по второй букве). Если ваша задача будет расти до "переводчика", то тогда стоит подумать о базе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 11:51 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
молодой человек, вы все мучаетесь сомнениями? да за истекшие 5 суток уже можно было бы попробывать:) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.11.2006, 12:03 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
При помещении 99850-ти слов словаря в строковый массив программа вызывает "Out of memory" может подскажите как соединяться с .cdb в C#? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.01.2007, 10:23 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
Admin_VladПри помещении 99850-ти слов словаря в строковый массив программа вызывает "Out of memory" может подскажите как соединяться с .cdb в C#? В cdb при количестве записей >10 000 тоже тормоза начнутся и при том ба-а-льшие. Кроме того, не известно будут ли в m$ поддерживать этот стандарт в будущем, хотя для win mobile 2005 его все таки вернули.. 8-) Искренние рекомендации - делай на SQL CE server 2005. Гемора в будущем будет меньше, да и он гораздо мощнее и быстрее работает чем pocket access aka cdb ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 11:35 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
Aklinсделать бор - структуру ( то же что и многомерный 27*27*27...) массив, для экономии памяти по первым 2-4 буквам. поиск будет очень быстрым. на жестком так же хранить и не парится. Так только память бесполезно терять. Если мы емеем словать, то его всегда можно прилично пожать. И всегда делали словари независимо а файл-переводчик вида rus_word -> eng_word ввиде их индекса id_rus -> id_eng в словарях. Для быстроты поиска слова в памяти можно храниь как упорядоченный массив и применять простой бинарный поиск.Или сначала равномерный hash а потом досравнивание. Уж тут можно и 10 mb за секунду перевести. Притом зачем словарю большая скорость. Притом словарь обычно работает как : вводишь слово, по мере ввода где-то внизу отображается список слов. тут напрашивается последовательный бинарный поиск по буквам слова. А так как слова всегда заканчиваются чем-то недопустимым '\0', то даше проверку делать ненадо на длинну. А нсли лень что-то самому писать всегда есть STL c её контейнерами, multimap's И прочей шушурой. А про MFC вообше помолчу . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 13:37 |
|
||
|
Как лучше хранить 2Mb слов в переводчике?
|
|||
|---|---|---|---|
|
#18+
Спасибо! Но появились вопросы. C Visual Studio встал укороченный MS SQL Server. С его помощью можно сделать репликацию базы данных со словами на SQL server mobile? Как бы пропарсить тектовый файл что-бы он добавился в SQL server mobile без ПК? Потом мне непонятно, как конечный пользователь будет ставить словарь. Ин6сталлировать SQL server, добавлять базу данных, копировать запускной файл программы. Или это легко делается инсталллятором? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.01.2007, 16:33 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=34281828&tid=2029584]: |
0ms |
get settings: |
4ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
164ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
34ms |
get tp. blocked users: |
1ms |
| others: | 213ms |
| total: | 440ms |

| 0 / 0 |
