Я разработал простое приложение для iOS, которое выполняет шифрование и дешифрование случайно сгенерированного сообщения.При развертывании приложения на iPhone 8 время выполнения иногда меняется.В большинстве случаев это соответствует.Я пытаюсь понять, почему время выполнения может иногда меняться.Во время работы я проверяю, чтобы другие приложения не открывались, чтобы убедиться, что другие приложения не используют процессоры iPhone.
Это мои кнопки действий, которые вызывают функции шифрования и дешифрования, и вот как я измеряю прошедшее время:
@IBAction func enc(_ sender: Any) {
let info = ProcessInfo.processInfo
let begin = info.systemUptime
enc0.text = "Enc-c0: \(e0)"
enc1.text = "Enc-c1: \(e1)"
let time = (info.systemUptime - begin)
time1.text = "Enc Time: \(time)"
}
@IBAction func dec(_ sender: Any) {
let info = ProcessInfo.processInfo
let begin = info.systemUptime
let decryption = dDec(encryption0:e0,encryption1:e1)
dec.text = "Dec: \(decryption)"
let time = (info.systemUptime - begin)
time2.text = "Dec Time: \(time)"
}
Это две вызываемые функции:
func dEnc() -> (BigUInt,BigUInt){
let r:BigUInt = BigUInt.randomInteger(lessThan: (p-2))
let c0:BigUInt = x.power(_:r,modulus:p)
let a:BigUInt = m.power(_:1, modulus: p)
let b:BigUInt = (pub_m.multiplied(by: pub_r)).power(_:r, modulus: p)
let c1:BigUInt = a.multiplied(by: b).power(1, modulus: p)
return (c0, c1)
}
func dDec(encryption0:BigUInt, encryption1:BigUInt) -> BigUInt{
let a = encryption1
var b = encryption0.power(priv_m, modulus: p)
var c = encryption0.power(priv_r, modulus: p)
b = b.inverse(p)!
c = c.inverse(p)!
let d = ((a.multiplied(by: b)).multiplied(by: c)).power(1, modulus: p)
return (d)
}
Приложения работают нормально, но время выполнения иногда меняется.Есть ли что-то, что мне нужно обработать, чтобы убедиться, что время выполнения согласованно?