How to set and clear external interupts

I am trying to use the external interupts on the duemilanove to increment variables to calculate the wheel RPM and engine RPM. I need to capture every pulse of both. the engine runs upto 14000 RPM so around 230 Hz and the wheel around 38. The problem im having is calculating the RPM's accuratly enough.

This is why I turned to the external interupts, using them as I am at the minute is leading to a very slugish system as im timing for a around 500ms on every loop of the main code which means the RMP's are calculated to slowly for the tachometer i've implimented and gear selection indicator also implimented.

My question: is there a way of using the sei and cli commands to turn only one interupt on at a time as then i can run the engine RPM capture say 5 times as the wheel caputure is running ones for 5 times as long in the background this would speed up the system and accuracy as the slower 38 Hz one would have five times longer to increment?

I can place my current code here but it is very long and sloppy, give me a shout if you want it...

Thanks all

We need to see code, but for now, just post your ISRs.

 attachInterrupt(0, engine_increment, HIGH);
  attachInterrupt(1, wheel_increment, HIGH);
  
  Serial.begin(115200);
}

void loop()
{
  read_car(); 
  
  ratio = engine_count / wheel_count;
  engine_RPM = engine_count * 240;
  
  Serial.print ("Engine RPM = ");
  Serial.println (engine_RPM);
  
  Serial.print ("Ratio = ");
  Serial.println (ratio);
  
  write_RPM();
  write_seg();
  Serial.println(time);
}

void read_car()
{
  engine_count = 0;
  wheel_count = 0;
  sei();
  delay(123);
  cli();
}
void engine_increment()
{
  engine_count ++;
}

void wheel_increment()
{
  wheel_count ++;
}

this contains the back end of setup, all the main loop and also the ISR's

using them as I am at the minute is leading to a very slugish system

The interrupts are not what is responsible for the sluggish system. It’s the delay() statement in read_car() that is.

The interrupts should fire all the time. Periodically, check your watch, and see if it’s time to compute rpm again. (Use the millis() function…).

If it is, record the time (millis() again), disable interrupts, copy the counter values. Reset them to 0, and re-enable interrupts.

Then, compute rpm. The process of computing the value to display, and displaying the value will be interrupted many times before completion, but that doesn’t matter.