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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Сравнение производительности RMI, CORBA & WS, По просьбе ALKS 
:(
    Опции темы
pvo
Дата 4.5.2006, 20:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 5
Всего: 7



Всем ДД!

В продолжение темы

Результаты старых тестов не нашел, поэтому на досуге написал все заново ...
Идея тестика такая - с помощью RMI, CORBA & Axis делаются сервера, к которыми клиент работает используя следующий интерфейс:

Код

public interface ITestOperations extends ILifecycleSupport {
    public void send(byte[] data);
    public void sendStrings(String[] strings);
    public String[] recieveStrings(String[] strings);
    byte[] getBytes( int length );
    String sayHello();
}


Сервера реализованы без всяких ухищрений  - например, при передаче массива байт, он передается сразу целиком, без использования итераторов.
Тестик для каждого из серверов запускает I потоков, каждый из которых выполняет J итераций. Затем выдается среднее время, затраченное на вызов каждого метода.

Все сервера делегируют вызовы классу TestOperationsImpl, который не делает ничего особенного smile
Код

package ru.ibrae.test.operations;

import java.util.Date;
import java.util.Properties;
import java.util.Random;

public class TestOperationsImpl extends BaseTestOperations {

    private static Random rnd = new Random();
    private boolean showMessages;
    
    public TestOperationsImpl() {
        this( new Properties(), false );
        System.out.println( "Called empty ctor." );
    }

    public TestOperationsImpl( Properties props, boolean showMessages ) {
        super( props );
        this.showMessages = showMessages;
    }

    private void show( String message ) {
        if ( showMessages ) {
            System.out.println( message );
        }
    }

    private String[] reverse(String[] strings ) {
        String[] result = new String[ strings.length ];
        for ( int i = 0; i < strings.length; i++ ) {
            result[ i ] = strings[ strings.length - 1 - i ];
        }
        return result;
    }

    public void send(byte[] data) {
        show( "Recieved " + data.length + " bytes" );
    }

    public void sendStrings(String[] strings) {
        show( "Recieved " + strings.length );
    }

    public String[] recieveStrings(String[] strings) {
        show( "Recieved " + strings.length );
        return reverse( strings );
    }


    public byte[] getBytes(int length) {
        byte[] result = new byte[ length ];
        rnd.nextBytes( result );
        show( "Returning byte[" + length + ']' );
        return result;
    }

    public String sayHello() {
        return "Hello at " + new Date();
    }
}



При выполнении серверов и клиента на одной машине( AMD64 3200+, 1G RAM ), работающей под Linux FC3, получился вот такой результат:

Код

TEST SCENARIO:
Client threads:            1
Iterations per thread:        10
Bytes array size:            100000
(Used is getBytes(), recieveBytes()
Strings array size:            5000


=======================================
Testing provider java
=======================================


Operation [String[] recieveStrings(String[])]: Average: 0.7 msec.
Operation [byte[] getBytes(int)]: Average: 76.2 msec.
Operation [void sayHello()]: Average: 7.3 msec.
Operation [void send(byte[])]: Average: 0.0 msec.
Operation [void sendStrings(String[])]: Average: 0.0 msec.

Total test time: 880 msec.


=======================================
Testing provider rmi
=======================================

Lookup completed at 516 msec.

Operation [String[] recieveStrings(String[])]: Average: 61.7 msec.
Operation [byte[] getBytes(int)]: Average: 8.6 msec.
Operation [void sayHello()]: Average: 5.5 msec.
Operation [void send(byte[])]: Average: 6.2 msec.
Operation [void sendStrings(String[])]: Average: 17.6 msec.

Total test time: 1000 msec.


=======================================
Testing provider corba
=======================================


Operation [String[] recieveStrings(String[])]: Average: 54.3 msec.
Operation [byte[] getBytes(int)]: Average: 29.3 msec.
Operation [void sayHello()]: Average: 3.4 msec.
Operation [void send(byte[])]: Average: 3.5 msec.
Operation [void sendStrings(String[])]: Average: 14.0 msec.

Total test time: 1050 msec.


=======================================
Testing provider axis
=======================================


Operation [String[] recieveStrings(String[])]: Average: 3990.4 msec.
Operation [byte[] getBytes(int)]: Average: 185.4 msec.
Operation [void sayHello()]: Average: 48.0 msec.
Operation [void send(byte[])]: Average: 71.8 msec.
Operation [void sendStrings(String[])]: Average: 283.3 msec.

Total test time: 45932 msec.



PS. Java: IBM J9SE VM (build 2.2, J2RE 1.4.2 IBM J9 2.2 Linux amd64-64 j9xa64142-20050929 (JIT enabled)
Tomcat 5.0.28
Axis 1.3
P.P.S. Результаты тестирования в случае использования 5, 10 и 20 потоков во вложении.
Если кому интересно, могу закинуть исходники тестика.
   

Это сообщение отредактировал(а) pvo - 4.5.2006, 21:56

Присоединённый файл ( Кол-во скачиваний: 12 )
Присоединённый файл  results.txt 8,37 Kb
PM MAIL ICQ   Вверх
jimur
Дата 4.5.2006, 23:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

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



А ORB ты какой использовал?
Это я на тему, что использование другого ORB'а может позволить улучшить показатели тестирования corba. 
PM MAIL   Вверх
pvo
Дата 4.5.2006, 23:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 5
Всего: 7



jimur, использовал стандартный - тот, который идет с jdk. JavaIDL он кажется называется.
Читал, что использование, например, JacORB, повышает производительность. 
Если у кого-нить есть желание прогнать тестик с ним или с другим ORB, то исходники могу выложить.
Также было бы интересно попробовать WS с Axis2 и jwsdp.
 Но у меня, к сожалению, сейчас со временем не очень smile  

Это сообщение отредактировал(а) pvo - 4.5.2006, 23:54
PM MAIL ICQ   Вверх
ALKS
Дата 5.5.2006, 00:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

Репутация: 6
Всего: 11



pvo, спасибо и выкладывай исходники, мне тоже погонять любопытно. smile 
PM   Вверх
onsh76
Дата 5.5.2006, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 93
Регистрация: 20.11.2005
Где: Beautiful BC

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



Ребята, вот Вам тоже кое-какие результаты согласно сабжа:
Comparing RPC implementations
Эта тема меня в свое время интересовала при построении distributed ent.application.
Выбор был сделан в пользу Hessian/Burlap. 
PM MAIL   Вверх
pvo
Дата 9.5.2006, 16:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


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

Репутация: 5
Всего: 7



onsh76, спасибо, интересная ссылка.

2Олл: исходники тестов во вложении. 

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  distributed_tests_0.1_src.tar.gz 45,42 Kb
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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