Skip to content

Commit

Permalink
perf: improve detect language speed
Browse files Browse the repository at this point in the history
  • Loading branch information
tisfeng committed Mar 17, 2023
1 parent 05f9168 commit 4b6a81e
Show file tree
Hide file tree
Showing 4 changed files with 10 additions and 20 deletions.
4 changes: 2 additions & 2 deletions src/axiosConfig.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* @author: tisfeng
* @createTime: 2022-06-26 11:13
* @lastEditor: tisfeng
* @lastEditTime: 2023-03-17 10:12
* @lastEditTime: 2023-03-17 10:37
* @fileName: axiosConfig.ts
*
* Copyright (c) 2022 by tisfeng, All Rights Reserved.
Expand Down Expand Up @@ -31,7 +31,7 @@ export let httpsAgent: HttpsProxyAgent | undefined;
/**
* Becacuse get system proxy will block 0.4s, we need to get it after finish query.
*/
export const delayGetSystemProxyTime = 3000;
export const delayGetSystemProxyTime = 5000;

const systemProxyURLKey = "systemProxyURL";

Expand Down
20 changes: 5 additions & 15 deletions src/detectLanauge/detect.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* @author: tisfeng
* @createTime: 2022-06-24 17:07
* @lastEditor: tisfeng
* @lastEditTime: 2022-10-18 10:22
* @lastEditTime: 2023-03-17 10:41
* @fileName: detect.ts
*
* Copyright (c) 2022 by tisfeng, All Rights Reserved.
Expand Down Expand Up @@ -178,22 +178,11 @@ function handleDetectedLanguage(detectedLangModel: DetectedLangModel): Promise<D
}

// If enabled speed first, and API detected two `preferred` language, try to use it.
if (detectedIdenticalLanguages.length === 2) {
// Perf: To speed up language detection, we use the first detected && preferred language.
if (detectedIdenticalLanguages.length === 1) {
// Mark two identical language as prior.
detectedLangModel.prior = true;

const bingType = LanguageDetectType.Bing;
const baiduType = LanguageDetectType.Baidu;
const volcanoType = LanguageDetectType.Volcano;
const containBingDetect = detectedLangModel.type === bingType || apiDetectedListContainsType(bingType);
const containBaiduDetect = detectedLangModel.type === baiduType || apiDetectedListContainsType(baiduType);
const containVolcanoDetect = detectedLangModel.type === volcanoType || apiDetectedListContainsType(volcanoType);
const confirmVolcanoDetect = containVolcanoDetect && detectedLangModel.confirmed;
if (
(containBingDetect || containBaiduDetect || confirmVolcanoDetect) &&
isPreferredLanguage(detectedLangCode) &&
myPreferences.enableDetectLanguageSpeedFirst
) {
if (isPreferredLanguage(detectedLangCode) && myPreferences.enableDetectLanguageSpeedFirst) {
detectedLangModel.confirmed = true;
console.warn(`---> Speed first, API detected 'two' identical 'preferred' language: ${detectedTypes}`);
console.warn(`detected language: ${JSON.stringify(detectedLangModel, null, 4)}`);
Expand Down Expand Up @@ -373,6 +362,7 @@ export function simpleDetectTextLanguage(text: string): DetectedLangModel {
return detectTypeResult;
}

// eslint-disable-next-line @typescript-eslint/no-unused-vars
function apiDetectedListContainsType(detectedLanguagetype: LanguageDetectType): boolean {
// console.log(`check if api detected list contains type: ${detectedLanguagetype}`);
const isContained = apiDetectedLanguageList.find((item) => item.type === detectedLanguagetype);
Expand Down
2 changes: 1 addition & 1 deletion src/easydict.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
* @author: tisfeng
* @createTime: 2022-06-23 14:19
* @lastEditor: tisfeng
* @lastEditTime: 2023-03-16 22:47
* @lastEditTime: 2023-03-17 10:45
* @fileName: easydict.tsx
*
* Copyright (c) 2022 by tisfeng, All Rights Reserved.
Expand Down
4 changes: 2 additions & 2 deletions src/translation/openAI/openai.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,19 +2,19 @@
* @author: tisfeng
* @createTime: 2023-03-14 22:11
* @lastEditor: tisfeng
* @lastEditTime: 2023-03-17 09:59
* @lastEditTime: 2023-03-17 10:27
* @fileName: openai.ts
*
* Copyright (c) 2023 by ${git_name}, All Rights Reserved.
*/

import axios, { AxiosError } from "axios";
import { httpsAgent } from "../../axiosConfig";
import { QueryWordInfo } from "../../dictionary/youdao/types";
import { QueryTypeResult, TranslationType } from "../../types";
import { getTypeErrorInfo } from "../../utils";
import { AppKeyStore } from "./../../preferences";
import { fetchSSE } from "./utils";
import { httpsAgent } from "../../axiosConfig";

// Use axios to request openai api.
export function requestOpenAITextTranslate(queryWordInfo: QueryWordInfo): Promise<QueryTypeResult> {
Expand Down

0 comments on commit 4b6a81e

Please sign in to comment.