Github user LosD commented on the issue:
https://github.com/apache/metamodel/pull/194
Made a (bit stupid) test:
```Java
import org.apache.metamodel.data.DataSet;
import org.apache.metamodel.excel.ExcelDataContext;
import org.apache.metamodel.schema.Column;
import org.apache.metamodel.schema.Schema;
import org.apache.metamodel.schema.Table;
import java.io.File;
public class Main {
public static void main(String[] args) {
long startTime = System.currentTimeMillis();
ExcelDataContext excelDataContext = new ExcelDataContext(new
File("C:\\Users\\Dennis\\Documents\\testlarge.xlsx"));
Schema schema = excelDataContext.getDefaultSchema();
Table table = schema.getTable(0);
Column column = table.getColumn(0);
Column column2 = table.getColumn(1);
DataSet ds =
excelDataContext.query().from(table).select(column).where(column2).gt(2).execute();
long rows = 0;
while (ds.next()) {
rows++;
if("NOWAY".equals(ds.getRow().getValue(0))) {
throw new RuntimeException("NO WAY!");
}
}
long endTime = System.currentTimeMillis();
System.out.println("Total execution time: " + (endTime-startTime) +
"ms, for " + rows + " rows");
}
}
```
(Applied the `where` to give MM a little bit of calculating work, and did
the NOWAY test just to ensure that Java doesn't optimize the loop out. It's
been too long for me to remember a better way)
The source sheet is 2 columns of numbers, one of text, and 610560 rows of
it on XLSX, 65536 on XLS (maximum). I newer really did anything with the third
column, but I guess we're mostly testing data loading anyway.
It looks like improvements for XLS, and a toss-up for XLSX to me (scale is
milliseconds). I could average to get a winner there, but I'm pretty sure
there's not enough numbers anyway. Though it looks like the old one is maybe a
bit more peaky (also noticed that when I, errrrr, tested my test):

---