Efektywność wybranych implementacji środowiska corba


 Wyniki uzyskane dla typów złożonych



Pobieranie 164.45 Kb.
Strona4/4
Data09.03.2018
Rozmiar164.45 Kb.
1   2   3   4

4.2 Wyniki uzyskane dla typów złożonych


Rezultaty otrzymane dla typów złożonych mają bardzo zbliżony charakter do tych osiągniętych przy transmisji danych prostych. W szczególności dotyczy to przesyłania łańcuchów znaków czy sekwencji. Rysunek 4 przedstawia omawianą zależność dla transmisji łańcucha znaków o przykładowej długości 36 kB. To, co wyraźnie odróżnia te rezultaty od przedstawionych na rysunku 2, to zwiększenie wydajności transmisji wewnątrzmaszynowych w stosunku do przesyłania w sieci (z wyjątkiem środowiska Orbix 2000 dla języka Java, które wyraźnie odbiega wydajnością od pozostałych). Wpływ na taką tendencję ma opóźnienie generowane przez transmisję większej ilości danych w sieci. Warto zauważyć również, że podobnie jak dla typów prostych stosunek wydajności poszczególnych implementacji środowiska CORBA dla przesyłania w sieci pozostaje niemal niezmieniony.



Rys. 4. Zależność czasu wykonania operacji przesłania łańcucha znaków o długości 36 kB z atrybutem in od rodzaju środowiska dla różnych konfiguracji sprzętowych

Dokonano także gruntownych testów operacji przesyłających łańcuchy znaków i sekwencji. Zgodnie z przewidywaniami czas wykonania operacji przesłania danych jest zależny liniowo od ich rozmiaru. Wśród czterech testowanych środowisk implementujących standard CORBA tylko Orbix 2000 dla Javy wykazywał niestabilne zachowanie przy przesyłaniu ciągów danych.



Na rysunku 5 przedstawiono zależność czasu wykonania operacji transmisji (z atrybutem in) łańcucha znaków w zależności od długości łańcucha dla implementacji Orbix 2000 w wersji Java. Przesyłanie danych w sieci nie wykazało żadnych nieprzewidzianych efektów, inaczej jest natomiast z operacją wykonywaną z ramach jednego komputera. W tym przypadku omawiana zależność jest funkcją prostokątną o okresie 16 kB. Podobne zachowanie się środowiska Orbix 2000 dla Javy obserwowano podczas przesyłania sekwencji. Efekt ten został dokładnie opisany i przedstawiony firmie IONA do konsultacji.



Rys. 5. Zależność czasu wykonania operacji przesłania łańcucha znaków (atrybut in) od długości łańcucha dla środowiska Orbix 2000 w wersji Java

Kolejna grupa testów obejmowała efektywność przesyłania struktur danych zagnieżdżonych w zmiennej typu Any. Jak należało zakładać, czas wykonania operacji jest liniowo zależny od poziomu zagnieżdżenia. W przypadku implementacji w języku Java pojawiają się nieco zaskakujące rezultaty (rysunek 6). Przesłanie wartości typu prostego umieszczonej w Any jest szybsze niż bezpośrednie przesłanie wartości, bez zagnieżdżenia w Any. Takie zachowanie się spowodowane jest tym, że pomiar czasu wykonania operacji dla wartości typu Any nie uwzględniał czasu insercji2. Implementacje w języku Java przygotowują zapewne dane do transmisji już w czasie insercji do Any. Przedstawione kilkumilisekundowe przyspieszenie dla typów prostych jest niezauważalne przy przesyłaniu dużej ilości danych w zależności od zagnieżdżenia w Any. Na rysunku 7 pokazano tę samą, co poprzednio, zależność z tym, że przesyłaną wartością była sekwencja struktur s2 o długości 2000 (w strukturze ulokowany był łańcuch znaków o długości 40 B oraz wartość typu short umieszczona w Any). W tym przypadku we wszystkich implementacjach przesłanie wartości bezpośrednio bez zagnieżdżenia w Any jest szybsze. Ponadto każde kolejne zagnieżdżenie daje bardzo niewielki przyrost czasu wykonania – co dobrze świadczy o efektywności operacji insercji.





Rys. 6. Zależność czasu wykonania operacji przesłania (z atrybutem in) wartości typu short od poziomu zagnieżdżenia danych w Any i rodzaju środowiska CORBA

Wszystkie prezentowane dotychczas rezultaty odnosiły się do operacji transmisji danych z atrybutem in. Przeprowadzone badania obejmowały także pozostałe sposoby przesyłania (z atrybutem out, inout oraz przez wartość zawracaną), które wykazywały zależności podobne do opisanych wyżej. Ponadto jak należało się spodziewać operacje przesyłania danych z atrybutem in i out są symetryczne. Oznacza to, że szybkość wykonania operacji z atrybutem in dla pary komputerów np.  jest niemal taka sama jak operacji z atrybutem out dla pary . Pełniejsze zestawienie przedstawiono w tabeli 6, gdzie dla poszczególnych implementacji zestawiono wyniki przesłania sekwencji oktetów o długości 25000.



Tabela 6. Porównanie czasów przesłania sekwencji oktetów o długości 25000 w zależności od kierunku transmisji danych i mocy obliczeniowej komputerów dla testowanych środowisk




Orbix 3.01

Orbix 2000 dla C++

Java 1.4

Orbix 2000 dla Javy

















in

26,93 ms

30,67 ms

23,16 ms

27,83 ms

26,32 ms

30,91 ms

119,92 ms

119,73 ms

out

30,81 ms

27,09 ms

25,17 ms

23,72 ms

30,31 ms

26,36 ms

119,95 ms

119,79 ms





Rys. 7. Zależność czasu wykonania operacji (z atrybutem in) przesłania sekwencji struktur o długości 2000 od poziomu zagnieżdżenia w Any i rodzaju środowiska CORBA

5. Podsumowanie


Zaprezentowane wyniki badań i tabele obrazują wybrane najistotniejsze i najciekawsze rezultaty, które pozwalają zorientować się w jakości testowanych środowisk. Pozostałe otrzymane wyniki mają charakter bardzo zbliżony do przedstawionych, co pozwala stwierdzić jednoznacznie, że implementacje dla języka C++ są wydajniejsze od implementacji dla języka Java. Środowisko Orbix 2000 dla Javy (wersja beta) jest najsłabszym produktem z testowanych i wyraźnie odstaje od trzech pozostałych implementacji, a niestabilne zachowanie się zmniejsza dodatkowo jego przydatność. Mimo, że otrzymane wyniki wykazują lepsze rezultaty dla implementacji języka C++, warto zwrócić uwagę na środowisko pochodzące z JDK 1.4. Czasy wykonania operacji otrzymane dla implementacji firmy Sun są ok. 50% gorsze od implementacji Orbix 2000 dla C++, jednak łatwość programowania i przejrzystość kodu w języku Java mogą w niektórych przypadkach wystarczająco wynagrodzić słabszą wydajność.

Przeprowadzone testy wykazały, że obie testowane implementacje standardu CORBA dla języka C++ są znacząco szybsze podczas pracy klienta i serwera na jednym komputerze. Istotny jest również fakt, że obciążenie generowane przez środowisko uruchomieniowe Java powodowało spadek wydajności wykonania testowanych operacji, co jest szczególnie zauważalne podczas pracy aplikacji testowej na komputerach z mniejszą ilością zasobów –  i . Ze względu jednak na przeznaczenie środowiska CORBA do pracy w sieci, wydaje się mieć to mniejsze znaczenie.


6. Literatura


  1. Object Management Group, The Common Object Request Broker: Architecture and Specification, 1998.

  2. IONA Technologies, Orbix2000 Programmer’s Guide, IONA Technologies PLC, 2000.

  3. IONA Technologies, Orbix C++ Programmer’s Guide, IONA Technologies PLC, 1999.

  4. IONA Technologies, IONA Adaptive Runtime Technology, http://www.iona.com/products/arthome.htm

  5. M. Henning, S. Vinoski, Advanced CORBA Programming with C++, Addison-Wesley, 1999.

  6. G. Clarke, R. Kempson, Introduction to the Design and Analysis of Experiments, Arnold, Londyn, 1997.

  7. A. Zeliaś, Metody statystyczne, Polskie Wydawnictwo Ekonomiczne, 2000.

  8. Object Management Group, Model Driven Architecture, 2000; http://www.omg.org/mda/papers.htm

  9. The Source for Java Technology, Sun Microsystems; http://java.sun.com

  10. W.R. Stevens, Programowanie zastosowań sieciowych w systemie Unix, Wydawnictwa-Naukowo Techniczne, Warszawa 1996.

  11. OmniORB, Free High Performance CORBA 2 ORB from AT&T Laboratories Cambridge; http://www.uk.research.att.com/omniORB

1 W przypadku komunikacji z użyciem technologii CORBA w ramach jednego komputera i jednej przestrzeni adresowej najczęściej ta konstrukcja nie występuje.

2 W zależności od programisty może ona przebiegać w różny sposób: dane do insercji mogą pochodzić bezpośrednio ze zmiennej, ale także np. ze strumienia danych. Ponadto celem badań było jedynie ustalenie czasu wykonania operacji, insercja znalazła się więc poza pomiarem czasu.


Pobieranie 164.45 Kb.

Share with your friends:
1   2   3   4




©operacji.org 2020
wyślij wiadomość

    Strona główna