RNCryptorPerformance.swift 1.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. //
  2. // RNCryptorPerformance.swift
  3. // RNCryptor
  4. //
  5. // Created by Rob Napier on 6/19/16.
  6. // Copyright © 2016 Rob Napier. All rights reserved.
  7. //
  8. import XCTest
  9. import RNCryptor
  10. private let password = "password"
  11. class RNCryptorPerformance: XCTestCase {
  12. func testOneshot() {
  13. let plaintext = RNCryptor.randomData(ofLength: 100_000_000)
  14. self.measure {
  15. _ = RNCryptor.encrypt(data: plaintext, withPassword: password)
  16. }
  17. }
  18. func _testIncremental(blocksOfSize blockSize: Int, count: Int) {
  19. var plainText = Data()
  20. plainText.count = blockSize
  21. let encryptor = RNCryptor.Encryptor(password: password)
  22. for _ in 1...count {
  23. _ = encryptor.update(withData: plainText)
  24. }
  25. _ = encryptor.finalData()
  26. }
  27. func testSmallBlocks() {
  28. measure {
  29. self._testIncremental(blocksOfSize: 1_000, count: 100_000)
  30. }
  31. }
  32. func testLargeBlocks() {
  33. measure {
  34. self._testIncremental(blocksOfSize: 1_000_000, count: 100)
  35. }
  36. }
  37. }