|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
Интересно будет выслушать рекомендации по поводу...21.10.2008, 17:07. Показов 1044. Ответов 8
Метки нет (Все метки)
hi, народ.
Вот тут такое дело забабахал. Ничего особенно сложного - XML through SAX -> Java object creation. И вот меня интересуют возможные пути оптимизации кода (и вообще в этом роде). Потому что будет это все бегать в application server и желательно не иметь тормозов тут, а то на основной рабочий workspace web-app уже и так выкладываются результаты работы 4 бинов. Сами понимаете... А разделить их на экраны нельзя, нужно иметь общую картинку сразу. Значит, в 2 словах о коде: NasaqQuery - обычный тестер для других классов. StockQuote - value object, который будет перегоняться между web-server & AS. StockQuoteBuilder - собственно, предмет топика - SAX content handler. Сначала сырцы всех 3, а затем вопросы...
0
|
|
| 21.10.2008, 17:07 | |
|
Ответы с готовыми решениями:
8
Рекомендации по поводу ускорения системы Очень интересно ваше мнение по поводу железа которое я себе подобрал=) Интересно что будет дальше.. |
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
||||||
| 21.10.2008, 17:08 [ТС] | ||||||
0
|
||||||
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
||||||
| 21.10.2008, 17:08 [ТС] | ||||||
0
|
||||||
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
||||||
| 21.10.2008, 17:08 [ТС] | ||||||
0
|
||||||
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
| 21.10.2008, 17:25 [ТС] | |
|
Значит, чтобы иметь представление, с чем мы работаем:
http://quotes.nasdaq.com/quote.dll?page=xml&mode=stock&symbol= и дописываем биржевой индекс в урлу. Дабы упростить задачу, дам несколько: Cisco Systems - CSCO Melkosoft - MSFTSun Microsystems - SUNW ibm, dell - одноименные. Я бере не все тэги из response, только относящиеся к делу. Их мы и заносим в requiredNodes. Итак, строка: private static final Collection requiredNodes = new ArrayList(); По логике можно сделать и Set. Реально мне это ничего не дает, поскольку набор тегов в runtime не изменяется. (тут идут ваши мнения, флеймы, одобрения, опровержения и т.д.) Использовал collections, потому что было удобно. Для оптимизации кода есть идея загнать все в обычный array, сделать его static final. Затем сделать Arrays.sort(requiredNodes) , а дальнейшую проверку на пригодность производить через Arrays.binarySearch(requiredNodes) Возвращает по идее -1, если такого элемента нет. У Eckel'я я не нашел особого разъяснения по скорости работы именно этих методов. Дальше. StockQuoteBuilder будет сделан dependant class of Stateless Session Bean. Кешировать инфу не имеет смысла, так как данные обновляются каждые минут 10-20, а точки отсчета у меня нет (да это и нереально). Или имеет смысл скешировать его, скажем, на web-server в ServletContext, и обновлять его, скажем каждые _5_ минут через scheduler (ну и выключать его на ночь, когда нем торгов). Любые посты на эту тему приветствуются. Пока, пожалуй хватит вопросов, посмотрим как будет реакция
0
|
|
|
Sergey_
|
|
| 21.10.2008, 17:46 | |
|
По поводу последнего файла. Первым делом бросается в глаза, что сравнение типа
if (node == NODE_ISSUE_NAME) совершенно некорректно. Будут сравниваться ссылки, а не объекты. Нужно писать node.equals(NODE_ISSUE_NAME) И Вообще весь этот длинный if-then-else смотрится как-то... Хорошо бы вместо строковых констант использовать числовые, и переделать его в switch-case. |
|
|
4 / 4 / 1
Регистрация: 13.08.2008
Сообщений: 931
|
|
| 21.10.2008, 17:52 [ТС] | |
|
Для начала - спасибо за быстрый ответ
![]() Далее. Поскольку все NODES идут как константы (static final), то такие сравнения работают. (Это один из заковыристых вопросов на сертификацию, кстати Именно поэтому я и запостил все классы, чтобы можно было проверить работоспособность. Нерабочий код я бы не слал.Насчет switch. Это я сам думал. Но иметь двойное переназначение констант - как-то коряво, запутывает и не добавляет скорости. Хотя попробуйте меня исправить
0
|
|
|
Sergey_
|
|
| 21.10.2008, 18:26 | |
|
Программа особо не усложнится, если мы будем использовать инты вместо стрингов. Просто в определениях констант нужно заменить стринги на инты, а вместо ArrayList использовать к примеру HashMap, в которой ссылаться на эти интовые константы. Ну и в стэк класть нужно наверно Integer. Ну понятно короче...
По теории, заменив if-then-else на switch мы должны выиграть в скорости, так как switch реализуется таким образом, что мы попадаем на нужный case, не тратя время на все остальные варианты (а их довольно много!). Я не уверен на 100%, что это все реально ускорит программу. Но мне кажется, стоит попробовать этот вариант. |
|
|
Sergey_
|
|
| 21.10.2008, 19:31 | |
|
По поводу оптимальности выбора ArrayList. В контейнер ничего не добавляется и не удаляется. Единственная операция - поиск.
В ArrayList поиск выполняется за O(n) операций (n - длина списка). Это не очень хорошо. Например, в HashSet время поиска - константа. Может быть лучше использовать этот контейнер (или HashMap, если согласиться с моим предыдущим постом и делать switch). Впрочем, может быть я и не прав. Элементов в списке не очень много и преимущество HashSet может оказаться непринципиальным. Нужно проверить. |
|
| 21.10.2008, 19:31 | |
|
Помогаю со студенческими работами здесь
9
Думаю вам будет интересно) Класс TThread (новичкам будет интересно) Интересно тут кто-нить будет ? как думаете интересно будет сделать радиолокатор? Исчезновение интернета в Windows XP SP3! Будет интересно Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога
Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
|
Установка Emscripten SDK (emsdk) и CMake на Windows для сборки C и C++ приложений в WebAssembly (Wasm)
8Observer8 30.01.2026
Чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. Система контроля версиями Git. . .
|
Подключение Box2D v3 к SDL3 для Android: физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
|
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования.
Часть библиотеки BedvitCOM
Использованы. . .
|
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога
SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
|
Загрузка PNG с альфа-каналом на SDL3 для Android: с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога
SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
|
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
|
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога
SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
|