svell_jerry há 2 anos atrás
pai
commit
4c2f01c176
2 ficheiros alterados com 160 adições e 17 exclusões
  1. 99 16
      src/core/writer.ts
  2. 61 1
      src/index.ts

+ 99 - 16
src/core/writer.ts

@@ -2,7 +2,7 @@ import { AppDatabase, ICell, IJson } from "./data";
 
 export class WriterJson {
   static mockJson(count: number): IJson {
-    const mock: IJson = { j: [] };
+    let mock: IJson = { j: [] };
     for (let i = 0; i < count; i++) {
       mock.j.push({
         p: {}, s: 0, v: '', m: '', f: '', fm: {}, h: '', n: '',
@@ -17,51 +17,58 @@ export class WriterJson {
   }
 
   static async write1w(): Promise<void> {
+    const mockJson = WriterJson.mockJson(10000);
     console.time("写入1W数据耗时: ");
-    await WriterJson.writeJson(WriterJson.mockJson(10000));
+    await WriterJson.writeJson(mockJson);
     console.timeEnd("写入1W数据耗时: ");
   }
 
   static async write5w(): Promise<void> {
+    const mockJson = WriterJson.mockJson(50000);
     console.time("写入5W数据耗时: ");
-    await WriterJson.writeJson(WriterJson.mockJson(50000));
+    await WriterJson.writeJson(mockJson);
     console.timeEnd("写入5W数据耗时: ");
   }
 
   static async write10w(): Promise<void> {
+    const mockJson = WriterJson.mockJson(100000);
     console.time("写入10W数据耗时: ");
-    await WriterJson.writeJson(WriterJson.mockJson(100000));
+    await WriterJson.writeJson(mockJson);
     console.timeEnd("写入10W数据耗时: ");
   }
 
   static async write50w(): Promise<void> {
+    const mockJson = WriterJson.mockJson(500000);
     console.time("写入50W数据耗时: ");
-    await WriterJson.writeJson(WriterJson.mockJson(500000));
+    await WriterJson.writeJson(mockJson);
     console.timeEnd("写入50W数据耗时: ");
   }
 
   static async write100w(): Promise<void> {
+    const mockJson = WriterJson.mockJson(1000000);
     console.time("写入100W数据耗时: ");
-    await WriterJson.writeJson(WriterJson.mockJson(1000000));
+    await WriterJson.writeJson(mockJson);
     console.timeEnd("写入100W数据耗时: ");
   }
 
   static async write500w(): Promise<void> {
+    const mockJson = WriterJson.mockJson(5000000);
     console.time("写入500W数据耗时: ");
-    await WriterJson.writeJson(WriterJson.mockJson(5000000));
+    await WriterJson.writeJson(mockJson);
     console.timeEnd("写入500W数据耗时: ");
   }
 
   static async write1000w(): Promise<void> {
+    const mockJson = WriterJson.mockJson(10000000);
     console.time("写入1000W数据耗时: ");
-    await WriterJson.writeJson(WriterJson.mockJson(10000000));
+    await WriterJson.writeJson(mockJson);
     console.timeEnd("写入1000W数据耗时: ");
   }
 }
 
 export class WriterArray {
   static mockArray(count: number): ICell[] {
-    const cells = [];
+    let cells = [];
     for (let i = 0; i < count; i++) {
       cells.push({
         p: {}, s: 0, v: '', m: '', f: '', fm: {}, h: '', n: '',
@@ -71,49 +78,125 @@ export class WriterArray {
   }
 
   static async writeArray(cells: ICell[]): Promise<void> {
+    let database = new AppDatabase();
+    for (let i = 0; i < cells.length; i++) {
+      let cell = cells[i];
+      await database.cells.add(cell);
+    }
+  }
+
+  static async write1w(): Promise<void> {
+    const mockArray = WriterBulkArray.mockArray(10000);
+    console.time("写入1W数据耗时: ");
+    await WriterArray.writeArray(mockArray);
+    console.timeEnd("写入1W数据耗时: ");
+  }
+
+  static async write5w(): Promise<void> {
+    const mockArray = WriterBulkArray.mockArray(50000);
+    console.time("写入5W数据耗时: ");
+    await WriterArray.writeArray(mockArray);
+    console.timeEnd("写入5W数据耗时: ");
+  }
+
+  static async write10w(): Promise<void> {
+    const mockArray = WriterBulkArray.mockArray(100000);
+    console.time("写入10W数据耗时: ");
+    await WriterArray.writeArray(mockArray);
+    console.timeEnd("写入10W数据耗时: ");
+  }
+
+  static async write50w(): Promise<void> {
+    const mockArray = WriterBulkArray.mockArray(500000);
+    console.time("写入50W数据耗时: ");
+    await WriterArray.writeArray(mockArray);
+    console.timeEnd("写入50W数据耗时: ");
+  }
+
+  static async write100w(): Promise<void> {
+    const mockArray = WriterBulkArray.mockArray(1000000);
+    console.time("写入100W数据耗时: ");
+    await WriterArray.writeArray(mockArray);
+    console.timeEnd("写入100W数据耗时: ");
+  }
+
+  static async write500w(): Promise<void> {
+    const mockArray = WriterBulkArray.mockArray(5000000);
+    console.time("写入500W数据耗时: ");
+    await WriterArray.writeArray(mockArray);
+    console.timeEnd("写入500W数据耗时: ");
+  }
+
+  static async write1000w(): Promise<void> {
+    const mockArray = WriterBulkArray.mockArray(10000000);
+    console.time("写入1000W数据耗时: ");
+    await WriterArray.writeArray(mockArray);
+    console.timeEnd("写入1000W数据耗时: ");
+  }
+}
+
+export class WriterBulkArray {
+  static mockArray(count: number): ICell[] {
+    let cells = [];
+    for (let i = 0; i < count; i++) {
+      cells.push({
+        p: {}, s: 0, v: '', m: '', f: '', fm: {}, h: '', n: '',
+      });
+    }
+    return cells;
+  }
+
+  static async writeBulkArray(cells: ICell[]): Promise<void> {
     const database = new AppDatabase();
     await database.cells.bulkAdd(cells);
   }
 
   static async write1w(): Promise<void> {
+    const mockArray = WriterBulkArray.mockArray(10000);
     console.time("写入1W数据耗时: ");
-    await WriterArray.writeArray(WriterArray.mockArray(10000));
+    await WriterBulkArray.writeBulkArray(mockArray);
     console.timeEnd("写入1W数据耗时: ");
   }
 
   static async write5w(): Promise<void> {
+    const mockArray = WriterBulkArray.mockArray(50000);
     console.time("写入5W数据耗时: ");
-    await WriterArray.writeArray(WriterArray.mockArray(50000));
+    await WriterBulkArray.writeBulkArray(mockArray);
     console.timeEnd("写入5W数据耗时: ");
   }
 
   static async write10w(): Promise<void> {
+    const mockArray = WriterBulkArray.mockArray(100000);
     console.time("写入10W数据耗时: ");
-    await WriterArray.writeArray(WriterArray.mockArray(100000));
+    await WriterBulkArray.writeBulkArray(mockArray);
     console.timeEnd("写入10W数据耗时: ");
   }
 
   static async write50w(): Promise<void> {
+    const mockArray = WriterBulkArray.mockArray(500000);
     console.time("写入50W数据耗时: ");
-    await WriterArray.writeArray(WriterArray.mockArray(500000));
+    await WriterBulkArray.writeBulkArray(mockArray);
     console.timeEnd("写入50W数据耗时: ");
   }
 
   static async write100w(): Promise<void> {
+    const mockArray = WriterBulkArray.mockArray(1000000);
     console.time("写入100W数据耗时: ");
-    await WriterArray.writeArray(WriterArray.mockArray(1000000));
+    await WriterBulkArray.writeBulkArray(mockArray);
     console.timeEnd("写入100W数据耗时: ");
   }
 
   static async write500w(): Promise<void> {
+    const mockArray = WriterBulkArray.mockArray(5000000);
     console.time("写入500W数据耗时: ");
-    await WriterArray.writeArray(WriterArray.mockArray(5000000));
+    await WriterBulkArray.writeBulkArray(mockArray);
     console.timeEnd("写入500W数据耗时: ");
   }
 
   static async write1000w(): Promise<void> {
+    const mockArray = WriterBulkArray.mockArray(10000000);
     console.time("写入1000W数据耗时: ");
-    await WriterArray.writeArray(WriterArray.mockArray(10000000));
+    await WriterBulkArray.writeBulkArray(mockArray);
     console.timeEnd("写入1000W数据耗时: ");
   }
 }

+ 61 - 1
src/index.ts

@@ -1,4 +1,4 @@
-import { WriterJson } from "./core/writer";
+import { WriterArray, WriterBulkArray, WriterJson } from "./core/writer";
 import { ClearJson } from "./core/clear";
 import { ReaderJson } from "./core/reader";
 
@@ -31,3 +31,63 @@ import { ReaderJson } from "./core/reader";
   await ReaderJson.readAll();
   await ClearJson.clearAll();
 };
+
+(window as any).WriterArray = async () => {
+  await WriterArray.write1w();
+  await ReaderJson.readAll();
+  await ClearJson.clearAll();
+
+  await WriterArray.write5w();
+  await ReaderJson.readAll();
+  await ClearJson.clearAll();
+
+  await WriterArray.write10w();
+  await ReaderJson.readAll();
+  await ClearJson.clearAll();
+
+  await WriterArray.write50w();
+  await ReaderJson.readAll();
+  await ClearJson.clearAll();
+
+  await WriterArray.write100w();
+  await ReaderJson.readAll();
+  await ClearJson.clearAll();
+
+  await WriterArray.write500w();
+  await ReaderJson.readAll();
+  await ClearJson.clearAll();
+
+  await WriterArray.write1000w();
+  await ReaderJson.readAll();
+  await ClearJson.clearAll();
+};
+
+(window as any).WriterBulkArray = async () => {
+  await WriterBulkArray.write1w();
+  await ReaderJson.readAll();
+  await ClearJson.clearAll();
+
+  await WriterBulkArray.write5w();
+  await ReaderJson.readAll();
+  await ClearJson.clearAll();
+
+  await WriterBulkArray.write10w();
+  await ReaderJson.readAll();
+  await ClearJson.clearAll();
+
+  await WriterBulkArray.write50w();
+  await ReaderJson.readAll();
+  await ClearJson.clearAll();
+
+  await WriterBulkArray.write100w();
+  await ReaderJson.readAll();
+  await ClearJson.clearAll();
+
+  await WriterBulkArray.write500w();
+  await ReaderJson.readAll();
+  await ClearJson.clearAll();
+
+  await WriterBulkArray.write1000w();
+  await ReaderJson.readAll();
+  await ClearJson.clearAll();
+};