Skip to content

Commit 884a516

Browse files
inemtsevIlya Nemtsev
andauthored
Ktor optimize and update (#9444)
* fixed batch writes * upgraded Ktor to latest --------- Co-authored-by: Ilya Nemtsev <[email protected]>
1 parent cda709d commit 884a516

File tree

2 files changed

+10
-9
lines changed
  • frameworks/Kotlin/ktor/ktor

2 files changed

+10
-9
lines changed

frameworks/Kotlin/ktor/ktor/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@
1313

1414
<properties>
1515
<kotlin.version>2.0.21</kotlin.version>
16-
<ktor.version>3.0.1</ktor.version>
16+
<ktor.version>3.0.2</ktor.version>
1717
<serialization.version>1.7.3</serialization.version>
1818
<kotlinx.html.version>0.11.0</kotlinx.html.version>
1919
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

frameworks/Kotlin/ktor/ktor/src/main/kotlin/org/jetbrains/ktor/benchmarks/Hello.kt

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import org.jetbrains.ktor.benchmarks.Constants.UPDATE_QUERY
1919
import org.jetbrains.ktor.benchmarks.Constants.WORLD_QUERY
2020
import java.sql.Connection
2121
import java.util.concurrent.ThreadLocalRandom
22+
import kotlin.random.Random
2223

2324
@Serializable
2425
data class Message(val message: String)
@@ -49,7 +50,7 @@ fun Application.main() {
4950
}
5051

5152
get("/db") {
52-
val random = ThreadLocalRandom.current()
53+
val random = Random.Default
5354

5455
val world = withContext(databaseDispatcher) {
5556
pool.connection.use { connection ->
@@ -67,7 +68,7 @@ fun Application.main() {
6768
call.respondText(Json.encodeToString(world), ContentType.Application.Json)
6869
}
6970

70-
fun Connection.selectWorlds(queries: Int, random: ThreadLocalRandom): List<World> {
71+
fun Connection.selectWorlds(queries: Int, random: Random): List<World> {
7172
val result = ArrayList<World>(queries)
7273
prepareStatement(WORLD_QUERY).use { statement ->
7374
repeat(queries) {
@@ -85,7 +86,7 @@ fun Application.main() {
8586

8687
get("/queries") {
8788
val queries = call.queries()
88-
val random = ThreadLocalRandom.current()
89+
val random = Random.Default
8990

9091
val result = withContext(databaseDispatcher) {
9192
pool.connection.use { it.selectWorlds(queries, random) }
@@ -130,7 +131,7 @@ fun Application.main() {
130131

131132
get("/updates") {
132133
val queries = call.queries()
133-
val random = ThreadLocalRandom.current()
134+
val random = Random.Default
134135
val result: List<World>
135136

136137
withContext(databaseDispatcher) {
@@ -139,14 +140,14 @@ fun Application.main() {
139140

140141
result.forEach { it.randomNumber = random.nextInt(dbRows) + 1 }
141142

142-
connection.prepareStatement(UPDATE_QUERY)
143-
.use { updateStatement ->
143+
connection.prepareStatement(UPDATE_QUERY).use { updateStatement ->
144144
for ((id, randomNumber) in result) {
145145
updateStatement.setInt(1, randomNumber)
146146
updateStatement.setInt(2, id)
147-
148-
updateStatement.executeUpdate()
147+
updateStatement.addBatch()
149148
}
149+
150+
updateStatement.executeBatch()
150151
}
151152
}
152153
}

0 commit comments

Comments
 (0)