With those numbers that's an understandable assumption on your part, but as it turns out the dev team did learn its lesson from your helpful pointers around the time we launched for iOS…
I just checked our Android code and we are reusing compiled statements in our benchmarks (Inserts only since compiled statements are not available for multi-column queries, afawk). Here’s the code we use for inserts:
public void testBatchInserts() throws PerformanceTestException {
SQLiteStatement stmt = db.compileStatement("INSERT INTO "
+ EmployeeDatabaseHelper.TABLE_EMPLOYEES + " VALUES(?1, ?2, ?3, ?4)");
db.beginTransaction();
for (int row = 0; row < getNumInserts(); row++) {
stmt.clearBindings();
stmt.bindString(2, getEmployeeName(row));
stmt.bindLong(3, getEmployeeAge(row));
stmt.bindLong(4, getEmployeeHiredStatus(row));
stmt.executeInsert();
}
db.setTransactionSuccessful();
db.endTransaction();
}
So there you go: no intention to mislead. Us overlooking prepared statements when we originally benched iOS was definitely a regrettable error but we do try to improve. Thanks for helping us along the way.