Следующий сценарий:
У меня есть Java-клиент с 40 потоками.Каждый поток имеет свой собственный экземпляр компонента, и каждый поток вызывает свой метод bean 100 раз.Я запутался в результатах этого теста, потому что отправка объектов оказалась намного быстрее, чем отправка байтовых или целочисленных массивов.Тем не менее, отправка одного целочисленного значения происходит быстрее всего.Размер обоих массивов в этом тесте был 1. Размер 2048 не был ни медленнее, ни быстрее.map, data, панель, maprecord и field являются классами с довольно большим количеством свойств.
Как это может быть?
static: создается один раз, сервер всегда возвращает один и тот же динамический экземпляр: создается каждый раз, когда вызывается метод bean-компонентов
sessions: 40
repetitions: 100
transactions: 4000
send bytes ( static )
transactions/s: 1047.3947
time: 3.819
send ints ( dynamic )
transactions/s: 11976.048
time: 0.334
send int arrays ( static )
transactions/s: 1114.5166
time: 3.589
send map with 30 fields ( static )
transactions/s: 4613.6104
time: 0.867
send map, created from panel ( dynamic )
transactions/s: 221.50847
time: 18.058
send data, containing a map created from a maprecord ( dynamic )
transactions/s: 5797.1016
time: 0.69
My javax.ejb.EJBObject:
...
public byte[] getByteArrayForPerformanceTest() throws java.rmi.RemoteException;
public Map getMapForPerformanceTest() throws java.rmi.RemoteException;
public Data getConverseDataForPerformanceTest() throws java.rmi.RemoteException;
...
UserSessionBean:
...
private static byte[] byteArrayForPerformanceTest = new byte[1];
public byte[] getByteArrayForPerformanceTest() throws java.rmi.RemoteException {
return UserSessionBean.byteArrayForPerformanceTest;
}
...