mirror of
https://github.com/GayPizzaSpecifications/darwin-apk.git
synced 2025-08-03 13:31:32 +00:00
Improve indexing performance by using .split instead of .components
and using substrings instead of needlessly copying strings
This commit is contained in:
@ -14,7 +14,7 @@ internal struct ApkRequirement: Hashable {
|
|||||||
self.versionSpec = spec
|
self.versionSpec = spec
|
||||||
}
|
}
|
||||||
|
|
||||||
init(extract: String) throws(ParseError) {
|
init(extract: Substring) throws(ParseError) {
|
||||||
var comparer: ComparatorBits = []
|
var comparer: ComparatorBits = []
|
||||||
var dependStr = extract[...]
|
var dependStr = extract[...]
|
||||||
let nameEnd: String.Index, versionStart: String.Index
|
let nameEnd: String.Index, versionStart: String.Index
|
||||||
|
@ -75,7 +75,7 @@ extension ApkIndexPackage {
|
|||||||
architecture = record.value
|
architecture = record.value
|
||||||
case "D":
|
case "D":
|
||||||
do {
|
do {
|
||||||
dependencies = try record.value.components(separatedBy: " ")
|
dependencies = try record.value.split(separator: " ")
|
||||||
.map { .init(requirement: try .init(extract: $0)) }
|
.map { .init(requirement: try .init(extract: $0)) }
|
||||||
} catch { throw .badValue(key: record.key) }
|
} catch { throw .badValue(key: record.key) }
|
||||||
case "C":
|
case "C":
|
||||||
@ -95,12 +95,12 @@ extension ApkIndexPackage {
|
|||||||
installedSize = value
|
installedSize = value
|
||||||
case "p":
|
case "p":
|
||||||
do {
|
do {
|
||||||
provides = try record.value.components(separatedBy: " ")
|
provides = try record.value.split(separator: " ")
|
||||||
.map { .init(requirement: try .init(extract: $0)) }
|
.map { .init(requirement: try .init(extract: $0)) }
|
||||||
} catch { throw .badValue(key: record.key) }
|
} catch { throw .badValue(key: record.key) }
|
||||||
case "i":
|
case "i":
|
||||||
do {
|
do {
|
||||||
installIf = try record.value.components(separatedBy: " ")
|
installIf = try record.value.split(separator: " ")
|
||||||
.map { .init(requirement: try .init(extract: $0)) }
|
.map { .init(requirement: try .init(extract: $0)) }
|
||||||
} catch { throw .badValue(key: record.key) }
|
} catch { throw .badValue(key: record.key) }
|
||||||
case "o":
|
case "o":
|
||||||
|
Reference in New Issue
Block a user