Triguk_VV Телефонист Откуда: Брест С нами с: 28.06.2004 Плодовитость: 231
Предупреждения: Рейтинг
Подано 85 (79/6) голосов
|
Мидлет SMS-Translit. Экономия денег при отправке длинных СМС!
|
2 Nitrogen:
1) Оказалось баг . Не мой, Сименса
Объясняю. Чтение списка смс выглядит примерно так:
while (ещё_есть_записи_в_базе) {
прочитать_запись_в_буфер(byte[] buf);
смс_элемент:=декодировать(buf, читать_только_текст);
добавить_в_список(смс_элемент.текст);
}
ещё_есть_записи_в_базе,прочитать_запись_в_буфер, добавить_в_список - методы, зашитые в API (MIDP 1.0). За их реализацию отвечает телефон.
декодировать - это мой код.
Для очищения совести замеряю время выполнения каждой инструкции в миллисекундах на эмуляторах c55 и cx65. Вот что получаю:
смс_элемент:=декодировать(buf, читать_только_текст); - всегда 0
добавить_в_список(смс_элемент.текст); - всегда 0
Но вот прочитать_запись_в_буфер(byte[] buf);, апишный метод, блин...
В тестовом варианте было 100 черновиков в архиве.
На эмуляторе с55: первая запись - 14 мс, затем всё возрастает,последняя - 660 мс (!!!)
Общее время - 31 секунда.
На эмуляторе сx55: первая запись - 5 мс, затем всё возрастает,последняя - 125 мс (!!!)
Общее время - 7 секунд.
Повторюсь: это на ЭМУЛЯТОРЕ. Эмулятор запущен на системе: cel northwood 2.00 (работает на 3.00 MHz), 384 [email protected] MHz, XPю SP2.
30 секунд на 3 гигагерцах
Повторюсь: тормоза вызывает метод из API. Ощущение, что он вопреки своему названию читает всю базу от начала до конца, декодируя её (размер записи произвольный). Я смотрел его реализацию в api.jar - короче, большая часть в ява-байткоде.
Вывод: придётся переписывать ПОЛОВИНУ исходника. Будет Translit v3. Работать будет ТОЛЬКО на сименсе и переделать эту версию под другие телефоны будет НЕРЕАЛЬНО.
Специально для тех, кто ждёт версию под другие телефоны - я эту тормозную версию оставлю, там только переделать метод отправки смс. Вот только я покуда не знаю как. Кстати, на других телефонах реализация RMS может быть другая, и мидлет тормозить не будет.
2 Nitrogen:
Продолжу по пунктам...
2) Придётся сделать ремап-таблицу с юникода на 7-бит. 7-битная походу нестандартная совсем оказалась
3) Без проблем.
|