### Question:
FileChannelStorageServiceImpl implements StorageService { @Override public InnerPage loadPage(long pageNumber) throws ReaderException { try { ByteBuffer buffer = ByteBuffer.allocate(SIZE_OF_PAGE); fileChannel.read(buffer, pageNumber * SIZE_OF_PAGE); return new InnerPage(pageNumber, Slices.fromByteBuffer(buffer)); } catch (IOException e) { throw new PageLoadException("Load page number " + pageNumber + " failed", e); } }  @Override void open(String ibdFilePath); @Override InnerPage loadPage(long pageNumber); @Override FilHeader loadPageHeader(long pageNumber); @Override void close(); @Override long numOfPages();  }### Answer:
@Test public void testLoadPage() throws IOException { try (StorageService storageService = new FileChannelStorageServiceImpl()) { storageService.open(IBD_FILE_BASE_PATH_MYSQL56 + "multiple/level/tb11.ibd"); long numOfPages = storageService.numOfPages(); log.info("numOfPages={}", numOfPages); assertThat(numOfPages, greaterThan(1000L)); long start = System.currentTimeMillis(); int runTimes = 200; for (int times = 0; times < runTimes; times++) { for (long i = 0; i < numOfPages; i++) { storageService.loadPage(i); } } long elapsedTimeInMs = System.currentTimeMillis() - start; assertThat(elapsedTimeInMs, lessThan(90000L)); log.info("load {} pages {} times ({}) using {}ms", numOfPages, runTimes, Utils.humanReadableBytes(SIZE_OF_PAGE * numOfPages * runTimes), elapsedTimeInMs); } }