Этот код передает 1 КБ или в битах? немного смущен
Я пытался проверить производительность сети, но у меня есть вопрос
static public void main(String[] args)
{
MPI.Init(args);
int myrank = MPI.COMM_WORLD.Rank();
int tag = 99;
int maxlen = 104857600;
int minlen = 1; //1kb ?
char [] sendbuff = new char [maxlen];
char [] recvbuff = new char [maxlen];
long speedKbps;
long speedMbps;
if (myrank == 0)
{
for (int len = minlen; len <= maxlen; len *= 2)
{ //len=*2 doubles the ping size each time
long startTime = System.nanoTime();
MPI.COMM_WORLD.Send(sendbuff, 0, len, MPI.CHAR, 1, tag);
MPI.COMM_WORLD.Recv(recvbuff, 0, len, MPI.CHAR, 1, tag);
long endTime = System.nanoTime();
long duration = endTime - startTime;
System.out.println("Time for the ping to be sent and recived of " + len + " kb is " + duration + " nanoseconds");
double transferRate = (len/ duration ) ; //amount of data in kilobytes transferred in 1 second
System.out.println("transferRate: " + transferRate + "KB per second");
}
}
}
minlen = 1
какой это размер, это 1 КБ, 1 бит, 1 байт?
Спасибо
2 ответа
Решение
Поскольку вы отправляете элементы из массива символов, len в каждой итерации цикла - это количество символов для отправки. Таким образом, размер minlen=1 является размером 1 символа, который в Java составляет 2 байта.
В качестве буфера отправки использовался тип char в качестве типа данных, это байт.