Efficient method to split comma-separated values?

some small sketch that parses a <1023,0,511,1023,0,1032> alike packet into an array of ints as bytes are received over serial.

//
//    FILE: parsePacket.ino
//  AUTHOR: Rob Tillaart
// VERSION: 0.1.00
// PURPOSE: demo
//    DATE: 2014-dec-29
//     URL:
//
// Released to the public domain
//

int field[30];
uint8_t idx = 0;
bool done = false;

void setup()
{
  Serial.begin(115200);
  Serial.println("Start ");
}

void loop()
{
  if (Serial.available() > 0)
  {
    done = parsePacket(Serial.read());
  }

  if (done) // ready to process a package
  {
    Serial.print("fields:\t");
    Serial.println(idx);
    for (int i = 0; i < idx; i++)
    {
      Serial.print(i);
      Serial.print("\t");
      Serial.println(field[i]);
    }
    Serial.println("done");
  }

  // do other things here
  
}

bool parsePacket(int c)
{
  bool ready = false;
  switch (c)
  {
    case '0'...'9':
      field[idx] = field[idx] * 10 + c - '0';
      break;
    case ',':
      idx++;
      field[idx] = 0;
      break;
    case '<':
      idx = 0;
      field[idx] = 0;
      break;
    case '>':
      idx++;
      ready = true;
      break;
    default:
      ; // skip
  }
  return ready;
}