From d3668d9f0baa24c0bae5937000da3e835890c778 Mon Sep 17 00:00:00 2001 From: ShikiSuen Date: Wed, 21 Sep 2022 00:31:09 +0800 Subject: [PATCH] LMCandidateNode // Use GCD on load. --- .../LangModelAssembly/LMCandidateNode.swift | 32 ++++++++++--------- 1 file changed, 17 insertions(+), 15 deletions(-) diff --git a/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/LMCandidateNode.swift b/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/LMCandidateNode.swift index 7ffbc018..eac86b74 100644 --- a/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/LMCandidateNode.swift +++ b/Packages/vChewing_LangModelAssembly/Sources/LangModelAssembly/LMCandidateNode.swift @@ -33,23 +33,25 @@ public class CandidateNode { } public static func load(url: URL) { - // 這兩個變數單獨拿出來,省得每次都重建還要浪費算力。 - var arrLines = [String.SubSequence]() - var fieldSlice = [Substring.SubSequence]() - var arrMembers = [CandidateNode]() - do { - arrLines = try String(contentsOfFile: url.path, encoding: .utf8).split(separator: "\n") - for strLine in arrLines.lazy.filter({ !$0.isEmpty }) { - fieldSlice = strLine.split(separator: "=") - switch fieldSlice.count { - case 1: arrMembers.append(.init(name: String(fieldSlice[0]))) - case 2: arrMembers.append(.init(name: String(fieldSlice[0]), symbols: .init(fieldSlice[1]))) - default: break + DispatchQueue.main.async { + // 這兩個變數單獨拿出來,省得每次都重建還要浪費算力。 + var arrLines = [String.SubSequence]() + var fieldSlice = [Substring.SubSequence]() + var arrMembers = [CandidateNode]() + do { + arrLines = try String(contentsOfFile: url.path, encoding: .utf8).split(separator: "\n") + for strLine in arrLines.lazy.filter({ !$0.isEmpty }) { + fieldSlice = strLine.split(separator: "=") + switch fieldSlice.count { + case 1: arrMembers.append(.init(name: String(fieldSlice[0]))) + case 2: arrMembers.append(.init(name: String(fieldSlice[0]), symbols: .init(fieldSlice[1]))) + default: break + } } + root = arrMembers.isEmpty ? defaultSymbolRoot : .init(name: "/", members: arrMembers) + } catch { + root = defaultSymbolRoot } - root = arrMembers.isEmpty ? defaultSymbolRoot : .init(name: "/", members: arrMembers) - } catch { - root = defaultSymbolRoot } }