File: StringEnum.swift

package info (click to toggle)
swiftlang 6.0.3-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 2,519,992 kB
  • sloc: cpp: 9,107,863; ansic: 2,040,022; asm: 1,135,751; python: 296,500; objc: 82,456; f90: 60,502; lisp: 34,951; pascal: 19,946; sh: 18,133; perl: 7,482; ml: 4,937; javascript: 4,117; makefile: 3,840; awk: 3,535; xml: 914; fortran: 619; cs: 573; ruby: 573
file content (228 lines) | stat: -rw-r--r-- 5,374 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
//===--- StringEnum.swift -------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2021 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See https://swift.org/LICENSE.txt for license information
// See https://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//

import TestsUtils

public let benchmarks = [
  BenchmarkInfo(
    name: "StringEnumRawValueInitialization",
    runFunction: run_StringEnumRawValueInitialization,
    tags: [.validation, .api, .String],
    legacyFactor: 20),
]

enum TestEnum : String {
  case c1 = "Swift"
  case c2 = "is"
  case c3 = "a"
  case c4 = "general-purpose"
  case c5 = "programming language"
  case c7 = "built"
  case c8 = "using"
  case c10 = "modern"
  case c11 = "approach"
  case c12 = "to"
  case c13 = "safety,"
  case c14 = "performance,"
  case c15 = "and"
  case c16 = "software"
  case c17 = "design"
  case c18 = "patterns."
  case c19 = ""
  case c20 = "The"
  case c21 = "goal"
  case c22 = "of"
  case c23 = "the"
  case c25 = "project"
  case c28 = "create"
  case c30 = "best"
  case c31 = "available"
  case c33 = "for"
  case c34 = "uses"
  case c35 = "ranging"
  case c36 = "from"
  case c37 = "systems"
  case c40 = "mobile"
  case c42 = "desktop"
  case c43 = "apps,"
  case c44 = "scaling"
  case c45 = "up"
  case c47 = "cloud"
  case c48 = "services."
  case c49 = "Most"
  case c50 = "importantly,"
  case c53 = "designed"
  case c55 = "make"
  case c56 = "writing"
  case c58 = "maintaining"
  case c59 = "correct"
  case c60 = "programs"
  case c61 = "easier"
  case c64 = "developer."
  case c65 = "To"
  case c66 = "achieve"
  case c67 = "this"
  case c68 = "goal,"
  case c69 = "we"
  case c70 = "believe"
  case c71 = "that"
  case c73 = "most"
  case c74 = "obvious"
  case c75 = "way"
  case c77 = "write"
  case c79 = "code"
  case c80 = "must"
  case c81 = "also"
  case c82 = "be:"
  case c84 = "Safe."
  case c92 = "should"
  case c94 = "behave"
  case c95 = "in"
  case c97 = "safe"
  case c98 = "manner."
  case c99 = "Undefined"
  case c100 = "behavior"
  case c103 = "enemy"
  case c107 = "developer"
  case c108 = "mistakes"
  case c110 = "be"
  case c111 = "caught"
  case c112 = "before"
  case c116 = "production."
  case c117 = "Opting"
  case c119 = "safety"
  case c120 = "sometimes"
  case c121 = "means"
  case c123 = "will"
  case c124 = "feel"
  case c125 = "strict,"
  case c126 = "but"
  case c130 = "clarity"
  case c131 = "saves"
  case c132 = "time"
  case c135 = "long"
  case c136 = "run."
  case c138 = "Fast."
  case c141 = "intended"
  case c142 = "as"
  case c144 = "replacement"
  case c146 = "C-based"
  case c147 = "languages"
  case c148 = "(C, C++, Objective-C)."
  case c152 = "As"
  case c153 = "such,"
  case c157 = "comparable"
  case c159 = "those"
  case c162 = "performance"
  case c165 = "tasks."
  case c166 = "Performance"
  case c170 = "predictable"
  case c172 = "consistent,"
  case c173 = "not"
  case c174 = "just"
  case c175 = "fast"
  case c177 = "short"
  case c178 = "bursts"
  case c180 = "require"
  case c181 = "clean-up"
  case c182 = "later."
  case c183 = "There"
  case c184 = "are"
  case c185 = "lots"
  case c188 = "with"
  case c189 = "novel"
  case c190 = "features"
  case c191 = "—"
  case c192 = "being"
  case c195 = "rare."
  case c197 = "Expressive."
  case c199 = "benefits"
  case c201 = "decades"
  case c203 = "advancement"
  case c205 = "computer"
  case c206 = "science"
  case c208 = "offer"
  case c209 = "syntax"
  case c213 = "joy"
  case c215 = "use,"
  case c219 = "developers"
  case c220 = "expect."
  case c221 = "But"
  case c224 = "never"
  case c225 = "done."
  case c226 = "We"
  case c228 = "monitor"
  case c230 = "advancements"
  case c232 = "embrace"
  case c233 = "what"
  case c234 = "works,"
  case c235 = "continually"
  case c236 = "evolving"
  case c240 = "even"
  case c241 = "better."
  case c243 = "Tools"
  case c246 = "critical"
  case c247 = "part"
  case c251 = "ecosystem."
  case c253 = "strive"
  case c255 = "integrate"
  case c256 = "well"
  case c257 = "within"
  case c259 = "developer’s"
  case c260 = "toolset,"
  case c262 = "build"
  case c263 = "quickly,"
  case c265 = "present"
  case c266 = "excellent"
  case c267 = "diagnostics,"
  case c270 = "enable"
  case c271 = "interactive"
  case c272 = "development"
  case c273 = "experiences."
  case c275 = "can"
  case c278 = "so"
  case c279 = "much"
  case c280 = "more"
  case c281 = "powerful,"
  case c282 = "like"
  case c283 = "Swift-based"
  case c284 = "playgrounds"
  case c285 = "do"
  case c287 = "Xcode,"
  case c288 = "or"
  case c290 = "web-based"
  case c291 = "REPL"
  case c293 = "when"
  case c294 = "working"
  case c296 = "Linux"
  case c297 = "server-side"
  case c298 = "code."
}

@inline(never)
func convert(_ s: String) {
  blackHole(TestEnum(rawValue: s))
}

@inline(never)
public func run_StringEnumRawValueInitialization(_ n: Int) {
  let first = "Swift"
  let short = "To"
  let long = "(C, C++, Objective-C)."
  let last = "code."
  for _ in 1...100*n {
    convert(first)
    convert(short)
    convert(long)
    convert(last)
  }
}