Your question is Improve Code Execution Time. Take a moment with it on the right.
Talk me through your thinking if you like. When you're confident, submit your answer and I'll grade it like a real screen (7/10 or better passes).
Mercedes-Benz Group's connected-vehicle platform ingests telemetry (speed, battery level) from the fleet through this service method. It behaves fine in staging, but during a fleet-wide software rollout, when thousands of vehicles report in within the same few minutes, latency for ingest climbs into the seconds and the ingestion queue backs up.
import java.sql.*;
import java.util.*;
public class TelemetryIngestService {
private List<String> recentVins = new ArrayList<>();
public synchronized void ingest(String vin, double speed, double batteryLevel) throws SQLException {
Connection conn = DriverManager.getConnection("jdbc:postgresql://telemetry-db/fleet");
Properties config = new Properties();
try {
config.load(new java.io.FileInputStream("ingest-config.properties"));
} catch (Exception e) {
throw new RuntimeException(e);
}
boolean isDuplicate = false;
for (String v : recentVins) {
if (v.equals(vin)) {
isDuplicate = true;
break;
}
}
if (!isDuplicate) {
PreparedStatement stmt = conn.prepareStatement(
"INSERT INTO telemetry (vin, speed, battery_level) VALUES (?, ?, ?)");
stmt.setString(1, vin);
stmt.setDouble(2, speed);
stmt.setDouble(3, batteryLevel);
stmt.executeUpdate();
recentVins.add(vin);
}
conn.close();
}
}
Analyze this snippet: how would you improve its execution time under a high-load scenario? Explain what you would change and why.