svell_jerry 2 years ago
parent
commit
0985a00206
5 changed files with 159 additions and 48 deletions
  1. 15 1
      src/core/clear.ts
  2. 11 2
      src/core/data.ts
  3. 20 2
      src/core/reader.ts
  4. 71 1
      src/core/writer.ts
  5. 42 42
      src/index.ts

+ 15 - 1
src/core/clear.ts

@@ -1,10 +1,24 @@
 import { AppDatabase } from "./data";
 
 export class ClearJson {
-  static async clearAll(): Promise<void> {
+  static async clearAllJSON(): Promise<void> {
     const database = new AppDatabase();
     console.time("清除数据耗时: ");
     await database.jsons.clear();
     console.timeEnd("清除数据耗时: ");
   }
+
+  static async clearAllArray(): Promise<void> {
+    const database = new AppDatabase();
+    console.time("清除数据耗时: ");
+    await database.cells.clear();
+    console.timeEnd("清除数据耗时: ");
+  }
+
+  static async clearAllText(): Promise<void > {
+    const database = new AppDatabase();
+    console.time("清除数据耗时: ");
+    await database.text.clear();
+    console.timeEnd("清除数据耗时: ");
+  }
 }

+ 11 - 2
src/core/data.ts

@@ -1,6 +1,7 @@
 import Dexie from "dexie";
 
 export interface ICell {
+  id?: number,
   p: object,
   s: number,
   v: string | number | boolean,
@@ -12,18 +13,26 @@ export interface ICell {
 }
 
 export interface IJson {
-  j: object[]
+  id?: number,
+  j: ICell[]
+}
+
+export interface IText {
+  id?: number,
+  t: string
 }
 
 export class AppDatabase extends Dexie {
   cells: Dexie.Table<ICell, number>;
   jsons: Dexie.Table<IJson, number>;
+  text: Dexie.Table<IText, number>;
 
   public constructor() {
     super('database');
     this.version(2).stores({
       cells: '++id, p, s, v, m, f, fm, h, n',
-      jsons: '++id, j',
+      text: '++id, tx',
+      jsons: '++id, t',
     });
   }
 }

+ 20 - 2
src/core/reader.ts

@@ -1,11 +1,29 @@
-import { AppDatabase, IJson } from "./data";
+import {
+  AppDatabase, ICell, IJson, IText,
+} from "./data";
 
 export class ReaderJson {
-  static async readAll(): Promise<Array<IJson>> {
+  static async readAllJSON(): Promise<Array<IJson>> {
     const database = new AppDatabase();
     console.time("读取数据耗时: ");
     const data = await database.jsons.toArray();
     console.timeEnd("读取数据耗时: ");
     return data;
   }
+
+  static async readAllArray(): Promise<Array<ICell>> {
+    const database = new AppDatabase();
+    console.time("读取数据耗时: ");
+    const data = await database.cells.toArray();
+    console.timeEnd("读取数据耗时: ");
+    return data;
+  }
+
+  static async readAllText(): Promise<Array<IText>> {
+    const database = new AppDatabase();
+    console.time("读取数据耗时: ");
+    const data = await database.text.toArray();
+    console.timeEnd("读取数据耗时: ");
+    return data;
+  }
 }

+ 71 - 1
src/core/writer.ts

@@ -1,4 +1,6 @@
-import { AppDatabase, ICell, IJson } from "./data";
+import {
+  AppDatabase, ICell, IJson, IText,
+} from "./data";
 
 export class WriterJson {
   static mockJson(count: number): IJson {
@@ -66,6 +68,74 @@ export class WriterJson {
   }
 }
 
+export class WriterJsonText {
+  static mockJsonText(count: number): IText {
+    let mock: ICell[] = [];
+    for (let i = 0; i < count; i++) {
+      mock.push({
+        p: {}, s: 0, v: '', m: '', f: '', fm: {}, h: '', n: '',
+      });
+    }
+    return {
+      t: JSON.stringify(mock),
+    };
+  }
+
+  static async writeJsonText(text: IText): Promise<void> {
+    const database = new AppDatabase();
+    await database.text.add(text);
+  }
+
+  static async write1w(): Promise<void> {
+    const mockJsonText = WriterJsonText.mockJsonText(10000);
+    console.time("写入1W数据耗时: ");
+    await WriterJsonText.writeJsonText(mockJsonText);
+    console.timeEnd("写入1W数据耗时: ");
+  }
+
+  static async write5w(): Promise<void> {
+    const mockJsonText = WriterJsonText.mockJsonText(50000);
+    console.time("写入5W数据耗时: ");
+    await WriterJsonText.writeJsonText(mockJsonText);
+    console.timeEnd("写入5W数据耗时: ");
+  }
+
+  static async write10w(): Promise<void> {
+    const mockJsonText = WriterJsonText.mockJsonText(100000);
+    console.time("写入10W数据耗时: ");
+    await WriterJsonText.writeJsonText(mockJsonText);
+    console.timeEnd("写入10W数据耗时: ");
+  }
+
+  static async write50w(): Promise<void> {
+    const mockJsonText = WriterJsonText.mockJsonText(500000);
+    console.time("写入50W数据耗时: ");
+    await WriterJsonText.writeJsonText(mockJsonText);
+    console.timeEnd("写入50W数据耗时: ");
+  }
+
+  static async write100w(): Promise<void> {
+    const mockJsonText = WriterJsonText.mockJsonText(1000000);
+    console.time("写入100W数据耗时: ");
+    await WriterJsonText.writeJsonText(mockJsonText);
+    console.timeEnd("写入100W数据耗时: ");
+  }
+
+  static async write500w(): Promise<void> {
+    const mockJsonText = WriterJsonText.mockJsonText(5000000);
+    console.time("写入500W数据耗时: ");
+    await WriterJsonText.writeJsonText(mockJsonText);
+    console.timeEnd("写入500W数据耗时: ");
+  }
+
+  static async write1000w(): Promise<void> {
+    const mockJsonText = WriterJsonText.mockJsonText(10000000);
+    console.time("写入1000W数据耗时: ");
+    await WriterJsonText.writeJsonText(mockJsonText);
+    console.timeEnd("写入1000W数据耗时: ");
+  }
+}
+
 export class WriterArray {
   static mockArray(count: number): ICell[] {
     let cells = [];

+ 42 - 42
src/index.ts

@@ -4,90 +4,90 @@ import { ReaderJson } from "./core/reader";
 
 (window as any).WriteJson = async () => {
   await WriterJson.write1w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllJSON();
+  await ClearJson.clearAllJSON();
 
   await WriterJson.write5w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllJSON();
+  await ClearJson.clearAllJSON();
 
   await WriterJson.write10w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllJSON();
+  await ClearJson.clearAllJSON();
 
   await WriterJson.write50w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllJSON();
+  await ClearJson.clearAllJSON();
 
   await WriterJson.write100w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllJSON();
+  await ClearJson.clearAllJSON();
 
   await WriterJson.write500w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllJSON();
+  await ClearJson.clearAllJSON();
 
   await WriterJson.write1000w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllJSON();
+  await ClearJson.clearAllJSON();
 };
 
 (window as any).WriterArray = async () => {
   await WriterArray.write1w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllArray();
+  await ClearJson.clearAllArray();
 
   await WriterArray.write5w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllArray();
+  await ClearJson.clearAllArray();
 
   await WriterArray.write10w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllArray();
+  await ClearJson.clearAllArray();
 
   await WriterArray.write50w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllArray();
+  await ClearJson.clearAllArray();
 
   await WriterArray.write100w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllArray();
+  await ClearJson.clearAllArray();
 
   await WriterArray.write500w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllArray();
+  await ClearJson.clearAllArray();
 
   await WriterArray.write1000w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllArray();
+  await ClearJson.clearAllArray();
 };
 
 (window as any).WriterBulkArray = async () => {
   await WriterBulkArray.write1w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllArray();
+  await ClearJson.clearAllArray();
 
   await WriterBulkArray.write5w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllArray();
+  await ClearJson.clearAllArray();
 
   await WriterBulkArray.write10w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllArray();
+  await ClearJson.clearAllArray();
 
   await WriterBulkArray.write50w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllArray();
+  await ClearJson.clearAllArray();
 
   await WriterBulkArray.write100w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllArray();
+  await ClearJson.clearAllArray();
 
   await WriterBulkArray.write500w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllArray();
+  await ClearJson.clearAllArray();
 
   await WriterBulkArray.write1000w();
-  await ReaderJson.readAll();
-  await ClearJson.clearAll();
+  await ReaderJson.readAllArray();
+  await ClearJson.clearAllArray();
 };