Модераторы: LSD, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> String to BitSet 
:(
    Опции темы
Slanix
Дата 24.2.2005, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 30.1.2004

Репутация: нет
Всего: 1



Тема такая, хочу хранить байт, представленный в двоичнов формте в XML документе.
примерно так:
<mask>10011101</mask>
При парсинге XML документа хочу эту строку
представить в виде BitSet-а и обратно BitSet в строку такого вида.
--------------------
Я буду искать лица Твоего, Господи Пс.26:8
PM MAIL ICQ YIM   Вверх
Domestic Cat
Дата 24.2.2005, 18:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Код

public class Test
{
   public static void main(String[] a)
   {
       String s = "0010101";
       BitSet bs = null;
       try
       {  
           bs = parseString(s);        
       }
       catch (Exception e)
       {
           e.printStackTrace();
       }
       System.out.println(bs);
   }
   
   public static BitSet parseString(String s) throws Exception
   {
       BitSet bs = new BitSet(s.length());
       for (int i = 0; i < s.length(); i++)
       {
           char c = s.charAt(i);
           int num = (int) c - 48;
           if (num == 1)
           {
               bs.set(s.length() - i);
           }
           else
           if (num != 0) throw new Exception();
       }
       return bs;
   }
}




--------------------

PM   Вверх
NotGonnaGetUs
Дата 25.2.2005, 14:04 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Код

   public static BitSet parseString(String s) throws Exception {
       BitSet bs = new BitSet(s.length());
       for (int i = 0; i < s.length(); i++) {
           switch (s.charAt(i)) {
               case '0':
                   break;
               case '1':
                   bs.set(s.length() - i);
                   break;
               default:
                   throw new Exception("wrong char at pos " + i);
           }
       }
       return bs;
   }

быстрее на 12%, легче для понимания smile
  Вверх
Domestic Cat
Дата 25.2.2005, 18:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Код без свича, 1000000 вызовов:
Цитата

915ms
955ms
948ms


Код со свичем:
Цитата

1114ms
1094ms
1080ms





--------------------

PM   Вверх
AntonSaburov
Дата 25.2.2005, 18:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Ну ты и упорный smile Достоин похвалы smile
PM MAIL WWW ICQ   Вверх
Domestic Cat
Дата 25.2.2005, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



smile Спасибо. Хотя возможно это свяано с ОС - под рукой масдая нет сейчас.


--------------------

PM   Вверх
AntonSaburov
Дата 25.2.2005, 19:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



Кинь мне свой примерчик - для чистоты эксперимента.
PM MAIL WWW ICQ   Вверх
Domestic Cat
Дата 25.2.2005, 19:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Держи

Присоединённый файл ( Кол-во скачиваний: 4 )
Присоединённый файл  test2.java.zip


--------------------

PM   Вверх
AntonSaburov
Дата 25.2.2005, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Штурман
****


Профиль
Группа: Модератор
Сообщений: 5658
Регистрация: 2.7.2002
Где: Санкт-Петербург

Репутация: 51
Всего: 118



А у меня вот акие вот результаты:

With switch:2844
Without switch: 2937

With switch:2844
Without switch: 2954

With switch:2844
Without switch: 2953

With switch:2844
Without switch: 2938

PM MAIL WWW ICQ   Вверх
NotGonnaGetUs
Дата 25.2.2005, 19:54 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Domestic @ 25.2.2005, 18:53)
smile Спасибо. Хотя возможно это свяано с ОС - под рукой масдая нет сейчас.

Не ожиданный результат smile

p4 2.4. win2k, sp4.

(Три блока. В блоке цикл с методом swith, затем с if. Кол-во вызовов 10 000 000.
Компиляция и запуск под тремя java-ми.)

java1.5.0_01

switch: 2794
if: 2755
switch: 2664
if: 2784
switch: 2724
if: 2795

java1.4.2_06

switch: 3085
if: 2904
switch: 2895
if: 2995
switch: 2934
if: 2935

java1.3.1

switch: 2033
if: 2023
switch: 2023
if: 2134
switch: 2133
if: 2133


приду домой уточню результат полученный на athlon2600+, winXP (javaXZ)
(~2800 на ~3200, по которому я написал предыдущий результат)

Прикольно.
Особенно интересна ситуация с 1.3.1 %)

  Вверх
Domestic Cat
Дата 25.2.2005, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Сорри, там нe 1000000 а в 10 раз большe нa каждый вариант.
У меня получается вот так(для 1000000) :

Цитата
With switch:1839
Without switch: 1555

With switch:1689
Without switch: 1704

With switch:1826
Without switch: 1606

With switch:1775
Without switch: 1647

With switch:1751
Without switch: 1568

With switch:1832
Without switch: 1631



В первый раз я использовал 2 разных программы - поd каждый случай отдельно.
Добавлено @ 19:58
-----

Mac OSX 10.3.3 G4 700/384
java version "1.4.2_06"
Добавлено @ 19:59
Ну вот, спасибо за регистрацию smile


--------------------

PM   Вверх
NotGonnaGetUs
Дата 25.2.2005, 20:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 25.2.2005
Где: Москва

Репутация: 4
Всего: 12



Цитата(Domestic @ 25.2.2005, 19:46)
Держи

не совсем честный тест.
блок который идёт первым выполняется медленее, чем следующий smile
в этом легко убедиться.

по этому я дублировал блоки, когда тестил.
PM MAIL   Вверх
Domestic Cat
Дата 25.2.2005, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Вообще я тестировал сначала обе по отдельности; а объединил чтоб проще было скинуть. Но и тогда было то же самое.




--------------------

PM   Вверх
NotGonnaGetUs
Дата 25.2.2005, 20:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 92
Регистрация: 25.2.2005
Где: Москва

Репутация: 4
Всего: 12



Запустил тест на маке.

mac os x 10.3.6, g4 450, 256mb.

java 1.4.2_05.

switch: 14823
if: 14961
switch: 14346
if: 14866
switch: 14332
if: 14895

правда не похоже на ваш результат? smile

как прикрепить файл, которым тестировал - не знаю.

Выходит, что оба варианта работают практически одинаково по времени...

Это сообщение отредактировал(а) NotGonnaGetUs - 25.2.2005, 20:27
PM MAIL   Вверх
Domestic Cat
Дата 25.2.2005, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Экс. модератор
Сообщений: 5452
Регистрация: 3.5.2004
Где: Dallas, US

Репутация: 50
Всего: 172



Странно. Но я нe мухлевал smile



--------------------

PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0580 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.