Hello OCF fans....

I'm using OCF with JavaCard for my application and have been getting
miserable
message performance. I am using the GalactIC java card.

I wrote a quick applet and host program to test data rates (see end for
snipits)

Using Jdk1.3 and OCF1.2 and pure java drivers for Refelx-60 serial I get:

100 passes of R0W0..........Done running R0W0 Milisec 20029
100 passes of R100W0..........Done running R100W0 Milisec 20099
100 passes of R200W0..........Done running R200W0 Milisec 40147
100 passes of R0W10..........Done running R0W10 Milisec 40068
100 passes of R0W20..........Done running R0W20 Milisec 60096

For some reason the message time is always an integer multiple of 1/5 of a
second

However when I change OCF to use PC/SC drivers on top of a Gemplus 430 USB
CAD I get:


100 passes of R0W0..........Done running R0W0 Milisec 5160
100 passes of R100W0..........Done running R100W0 Milisec 15430
100 passes of R200W0..........Done running R200W0 Milisec 26040
100 passes of R0W10..........Done running R0W10 Milisec 29060
100 passes of R0W20..........Done running R0W20 Milisec 52890

Now this makes a bit more sense, and it implies

approx 50 mSec / apdu
approx 1 mSec / loop itteration of eeprom read
approx 24 mSec / loop itteration of eeprom write

Question(s):
========
Is this it? Have I acheived the maximum performance?
What is the maximum round trip APDU rate that I can realistically acheive?
and how?
Why is the eeprom write only 40 bytes / sec? ( I know its slow, but that
slow!!)
Have you done any benchmark testing?
Can you point me to any benchmark results?

Eric Pearson

PS: Code snipits below (jar and cap avaliable upon request)

Applet process:

  switch(buffer[ISO7816.OFFSET_INS])  {
       case R0W0:    break;
   case R100W0:    for( ii = 0; ii < 100; ii ++ )     jj = bill;    break;
   case R200W0:    for( ii = 0; ii < 200; ii ++ )     jj = bill;    break;
   case R0W10:    for( ii = 0; ii < 10; ii ++ )     bill = ii;    break;
   case R0W20:    for( ii = 0; ii < 20; ii ++ )     bill = ii;    break;
   case CMD_SELECT:           shLe=(short)0; break;
   default:  ISOException.throwIt( ISO7816.SW_COMMAND_NOT_ALLOWED); break;
  }

note: where bill is an eeprom instance variable
OpenCard test routine:

 public void run( String s, byte cmd, int num )
 {
  System.out.print("Start running " + num + " passes of " + s +
"..........");
  Date start = new Date();
  for( int ii = 0; ii < num; ii ++ ) {
   do_cmd( ptcs, apdu, rpdu, cmd );
  }
  Date end = new Date();
  System.out.println("Done running " + s + " Milisec " + ( end.getTime() -
start.getTime()) );
 }




---
> Visit the OpenCard web site at http://www.opencard.org/ for more
> information on OpenCard---binaries, source code, documents.
> This list is being archived at http://www.opencard.org/archive/opencard/

! To unsubscribe from the [EMAIL PROTECTED] mailing list send an email
! to
!                           [EMAIL PROTECTED]
! containing the word
!                           unsubscribe 
! in the body.

Reply via email to