RFID-RC522, PICC_IsNewCardPresent() command delay is 27

Hello,
As the subject says I need help with the command (PICC_IsNewCardPresent()) that is found in MFRC522.
The problem here is the time this command takes I have run a code to check the time it takes and the results were 26 to 28 milliseconds which is ok, But for my project that is not working because I am working with a sensor that takes samples each 2 to 5 milliseconds.
So the delay that I got from this command is not acceptable for me.
My question is whether I can decrease this time or not.

Code

#include <SPI.h> //SPI library
#include <MFRC522.h> //RFID-RC522 library
#define SS_PIN 53
#define RST_PIN 49
//SPI Setup******************
MFRC522 rfid(SS_PIN, RST_PIN); // Instance of the class
MFRC522::MIFARE_Key key;

void setup() {
  // put your setup code here, to run once:
  Serial.begin(9600); //Start Serial communication with baud rate 9600
  SPI.begin(); // Init SPI bus
  rfid.PCD_Init(); // Init MFRC522
}

void loop() {
  unsigned long first = millis();
  bool result =  rfid.PICC_IsNewCardPresent();
  unsigned long second = millis();
  Serial.println(second - first);
}

Result

27
27
28
26
28
27
26
28
26
28
27
27
27
27
27
27
28
26
28
26
27
28
26
28
27
27
27
27
27
27
27
27
28
26
27
28

What is your other sensor? Can you set up a timer interrupt to record that sensor every 5 msec? That way, it could run in the background while the RFID is trying to read. Of course, this heavily depends on what the sensor is.

The type of sensor is AC Current/Voltage sensor.
I use ACS712 Current sensor and a simple electronic voltage sensor using amplifier.
My program loop first checks for messages then check the RFID after that taking sample.
After reaching 1000 sample I start some calculation and show it on LCD.
My problem here is when checking the RFID (PICC_ISNEWCARDPRESENT()) I got delayed to take each sample by 26 to 27.
I have run the program and printed the Millis after reaching 1000 sample and i got the following:
Millis = 7337 without (PICC_ISNEWCARDPRESENT()) checking the RFID.
Millis = 29036 with (PICC_ISNEWCARDPRESENT()) checking the RFID.

You use the difference is big which is inconvenient for me.

I hope so someone could solve this problem.

How about you post your entire sketch? Like I said in reply #1, you could set up a timer interrupt and if all you are doing is an analogRead() of some voltage, you can do that while the RFID is trying to determine if a chip is present or not.

Another approach would be to have 2 arduinos. 1 connected to the RFID shield and waiting for a chip to be present. The other doing the measurements/calculations/display. The second one could periodically communicate with the first one to see if a chip is present and, if so, transfer the information