Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
梦境迷离
Zio Redis
提交
9ac3b003
Z
Zio Redis
项目概览
梦境迷离
/
Zio Redis
10 个月 前同步成功
通知
4
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
Z
Zio Redis
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
前往新版Gitcode,体验更适合开发者的 AI 搜索 >>
未验证
提交
9ac3b003
编写于
11月 22, 2020
作者:
K
Kostyantyn Spitsyn
提交者:
GitHub
11月 22, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Benchmark strings API (#199)
上级
4c476073
变更
10
隐藏空白更改
内联
并排
Showing
10 changed file
with
459 addition
and
14 deletion
+459
-14
benchmarks/src/main/scala/zio/redis/AppendBenchmarks.scala
benchmarks/src/main/scala/zio/redis/AppendBenchmarks.scala
+53
-0
benchmarks/src/main/scala/zio/redis/BenchmarkRuntime.scala
benchmarks/src/main/scala/zio/redis/BenchmarkRuntime.scala
+1
-14
benchmarks/src/main/scala/zio/redis/BenchmarksUtils.scala
benchmarks/src/main/scala/zio/redis/BenchmarksUtils.scala
+16
-0
benchmarks/src/main/scala/zio/redis/DecrBenchmarks.scala
benchmarks/src/main/scala/zio/redis/DecrBenchmarks.scala
+53
-0
benchmarks/src/main/scala/zio/redis/GetBenchmarks.scala
benchmarks/src/main/scala/zio/redis/GetBenchmarks.scala
+53
-0
benchmarks/src/main/scala/zio/redis/GetBitBenchmarks.scala
benchmarks/src/main/scala/zio/redis/GetBitBenchmarks.scala
+53
-0
benchmarks/src/main/scala/zio/redis/IncrBenchmarks.scala
benchmarks/src/main/scala/zio/redis/IncrBenchmarks.scala
+54
-0
benchmarks/src/main/scala/zio/redis/RedisClients.scala
benchmarks/src/main/scala/zio/redis/RedisClients.scala
+71
-0
benchmarks/src/main/scala/zio/redis/SetBenchmarks.scala
benchmarks/src/main/scala/zio/redis/SetBenchmarks.scala
+52
-0
benchmarks/src/main/scala/zio/redis/StrLenBenchmarks.scala
benchmarks/src/main/scala/zio/redis/StrLenBenchmarks.scala
+53
-0
未找到文件。
benchmarks/src/main/scala/zio/redis/AppendBenchmarks.scala
0 → 100644
浏览文件 @
9ac3b003
package
zio.redis
import
java.util.concurrent.TimeUnit
import
org.openjdk.jmh.annotations._
import
zio.ZIO
@State
(
Scope
.
Thread
)
@BenchmarkMode
(
Array
(
Mode
.
Throughput
,
Mode
.
AverageTime
))
@OutputTimeUnit
(
TimeUnit
.
SECONDS
)
@Measurement
(
iterations
=
15
)
@Warmup
(
iterations
=
15
)
@Fork
(
2
)
class
AppendBenchmarks
extends
BenchmarkRuntime
{
@Param
(
Array
(
"500"
))
private
var
count
:
Int
=
_
private
var
items
:
List
[
String
]
=
_
@Setup
(
Level
.
Trial
)
def
setup
()
:
Unit
=
{
items
=
(
0
to
count
).
toList
.
map
(
_
.
toString
)
zioUnsafeRun
(
ZIO
.
foreach_
(
items
)(
i
=>
set
(
i
,
i
)))
}
@Benchmark
def
laserdisc
()
:
Unit
=
{
import
_root_.laserdisc.fs2._
import
_root_.laserdisc.
{
all
=>
cmd
,
_
}
import
cats.instances.list._
import
cats.syntax.foldable._
unsafeRun
[
LaserDiscClient
](
c
=>
items
.
traverse_
(
i
=>
c
.
send
(
cmd
.
append
(
Key
.
unsafeFrom
(
i
),
i
))))
}
@Benchmark
def
rediculous
()
:
Unit
=
{
import
cats.implicits._
import
io.chrisdavenport.rediculous._
unsafeRun
[
RediculousClient
](
c
=>
items
.
traverse_
(
i
=>
RedisCommands
.
append
[
RedisIO
](
i
,
i
).
run
(
c
)))
}
@Benchmark
def
redis4cats
()
:
Unit
=
{
import
cats.instances.list._
import
cats.syntax.foldable._
unsafeRun
[
Redis4CatsClient
[
String
]](
c
=>
items
.
traverse_
(
i
=>
c
.
append
(
i
,
i
)))
}
@Benchmark
def
zio
()
:
Unit
=
zioUnsafeRun
(
ZIO
.
foreach_
(
items
)(
i
=>
append
(
i
,
i
)))
}
benchmarks/src/main/scala/zio/redis/BenchmarkRuntime.scala
浏览文件 @
9ac3b003
package
zio.redis
import
scala.concurrent.ExecutionContext
import
cats.effect.
{
ContextShift
,
Timer
,
IO
=>
CatsIO
}
import
io.chrisdavenport.rediculous.Redis
import
zio.BootstrapRuntime
import
zio.internal.Platform
object
BenchmarkRuntime
extends
BootstrapRuntime
{
implicit
val
cs
:
ContextShift
[
CatsIO
]
=
CatsIO
.
contextShift
(
ExecutionContext
.
global
)
implicit
val
timer
:
Timer
[
CatsIO
]
=
CatsIO
.
timer
(
ExecutionContext
.
global
)
trait
BenchmarkRuntime
extends
BootstrapRuntime
with
RedisClients
with
BenchmarksUtils
{
override
val
platform
:
Platform
=
Platform
.
benchmark
type
RedisIO
[
A
]
=
Redis
[
CatsIO
,
A
]
final
val
RedisHost
=
"127.0.0.1"
final
val
RedisPort
=
6379
}
benchmarks/src/main/scala/zio/redis/BenchmarksUtils.scala
0 → 100644
浏览文件 @
9ac3b003
package
zio.redis
import
cats.effect.
{
IO
=>
CatsIO
}
import
zio.logging.Logging
import
zio.
{
BootstrapRuntime
,
ZIO
}
trait
BenchmarksUtils
{
self
:
RedisClients
with
BootstrapRuntime
=>
def
unsafeRun
[
CL
](
f
:
CL
=>
CatsIO
[
Unit
])(
implicit
unsafeRunner
:
QueryUnsafeRunner
[
CL
])
:
Unit
=
unsafeRunner
.
unsafeRun
(
f
)
def
zioUnsafeRun
(
source
:
ZIO
[
RedisExecutor
,
RedisError
,
Unit
])
:
Unit
=
unsafeRun
(
source
.
provideLayer
(
Logging
.
ignore
>>>
RedisExecutor
.
live
(
RedisHost
,
RedisPort
).
orDie
))
}
benchmarks/src/main/scala/zio/redis/DecrBenchmarks.scala
0 → 100644
浏览文件 @
9ac3b003
package
zio.redis
import
java.util.concurrent.TimeUnit
import
org.openjdk.jmh.annotations._
import
zio.ZIO
@State
(
Scope
.
Thread
)
@BenchmarkMode
(
Array
(
Mode
.
Throughput
,
Mode
.
AverageTime
))
@OutputTimeUnit
(
TimeUnit
.
SECONDS
)
@Measurement
(
iterations
=
15
)
@Warmup
(
iterations
=
15
)
@Fork
(
2
)
class
DecrBenchmarks
extends
BenchmarkRuntime
{
@Param
(
Array
(
"500"
))
private
var
count
:
Int
=
_
private
var
items
:
List
[
String
]
=
_
@Setup
(
Level
.
Trial
)
def
setup
()
:
Unit
=
{
items
=
(
0
to
count
).
toList
.
map
(
_
.
toString
)
zioUnsafeRun
(
ZIO
.
foreach_
(
items
)(
i
=>
set
(
i
,
i
)))
}
@Benchmark
def
laserdisc
()
:
Unit
=
{
import
_root_.laserdisc.fs2._
import
_root_.laserdisc.
{
all
=>
cmd
,
_
}
import
cats.instances.list._
import
cats.syntax.foldable._
unsafeRun
[
LaserDiscClient
](
c
=>
items
.
traverse_
(
i
=>
c
.
send
(
cmd
.
decr
[
Long
](
Key
.
unsafeFrom
(
i
)))))
}
@Benchmark
def
rediculous
()
:
Unit
=
{
import
cats.implicits._
import
io.chrisdavenport.rediculous._
unsafeRun
[
RediculousClient
](
c
=>
items
.
traverse_
(
i
=>
RedisCommands
.
decr
[
RedisIO
](
i
).
run
(
c
)))
}
@Benchmark
def
redis4cats
()
:
Unit
=
{
import
cats.instances.list._
import
cats.syntax.foldable._
unsafeRun
[
Redis4CatsClient
[
Long
]](
c
=>
items
.
traverse_
(
i
=>
c
.
decr
(
i
)))
}
@Benchmark
def
zio
()
:
Unit
=
zioUnsafeRun
(
ZIO
.
foreach_
(
items
)(
i
=>
decr
(
i
)))
}
benchmarks/src/main/scala/zio/redis/GetBenchmarks.scala
0 → 100644
浏览文件 @
9ac3b003
package
zio.redis
import
java.util.concurrent.TimeUnit
import
org.openjdk.jmh.annotations._
import
zio.ZIO
@State
(
Scope
.
Thread
)
@BenchmarkMode
(
Array
(
Mode
.
Throughput
,
Mode
.
AverageTime
))
@OutputTimeUnit
(
TimeUnit
.
SECONDS
)
@Measurement
(
iterations
=
15
)
@Warmup
(
iterations
=
15
)
@Fork
(
2
)
class
GetBenchmarks
extends
BenchmarkRuntime
{
@Param
(
Array
(
"500"
))
private
var
count
:
Int
=
_
private
var
items
:
List
[
String
]
=
_
@Setup
(
Level
.
Trial
)
def
setup
()
:
Unit
=
{
items
=
(
0
to
count
).
toList
.
map
(
_
.
toString
)
zioUnsafeRun
(
ZIO
.
foreach_
(
items
)(
i
=>
set
(
i
,
i
)))
}
@Benchmark
def
laserdisc
()
:
Unit
=
{
import
_root_.laserdisc.fs2._
import
_root_.laserdisc.
{
all
=>
cmd
,
_
}
import
cats.instances.list._
import
cats.syntax.foldable._
unsafeRun
[
LaserDiscClient
](
c
=>
items
.
traverse_
(
i
=>
c
.
send
(
cmd
.
get
[
String
](
Key
.
unsafeFrom
(
i
)))))
}
@Benchmark
def
rediculous
()
:
Unit
=
{
import
cats.implicits._
import
io.chrisdavenport.rediculous._
unsafeRun
[
RediculousClient
](
c
=>
items
.
traverse_
(
i
=>
RedisCommands
.
get
[
RedisIO
](
i
).
run
(
c
)))
}
@Benchmark
def
redis4cats
()
:
Unit
=
{
import
cats.instances.list._
import
cats.syntax.foldable._
unsafeRun
[
Redis4CatsClient
[
String
]](
c
=>
items
.
traverse_
(
i
=>
c
.
get
(
i
)))
}
@Benchmark
def
zio
()
:
Unit
=
zioUnsafeRun
(
ZIO
.
foreach_
(
items
)(
get
))
}
benchmarks/src/main/scala/zio/redis/GetBitBenchmarks.scala
0 → 100644
浏览文件 @
9ac3b003
package
zio.redis
import
java.util.concurrent.TimeUnit
import
org.openjdk.jmh.annotations._
import
zio.ZIO
@State
(
Scope
.
Thread
)
@BenchmarkMode
(
Array
(
Mode
.
Throughput
,
Mode
.
AverageTime
))
@OutputTimeUnit
(
TimeUnit
.
SECONDS
)
@Measurement
(
iterations
=
15
)
@Warmup
(
iterations
=
15
)
@Fork
(
2
)
class
GetBitBenchmarks
extends
BenchmarkRuntime
{
@Param
(
Array
(
"500"
))
private
var
count
:
Int
=
_
private
var
items
:
List
[
String
]
=
_
@Setup
(
Level
.
Trial
)
def
setup
()
:
Unit
=
{
items
=
(
0
to
count
).
toList
.
map
(
_
.
toString
)
zioUnsafeRun
(
ZIO
.
foreach_
(
items
)(
i
=>
set
(
i
,
i
)))
}
@Benchmark
def
laserdisc
()
:
Unit
=
{
import
_root_.laserdisc.fs2._
import
_root_.laserdisc.
{
all
=>
cmd
,
_
}
import
cats.instances.list._
import
cats.syntax.foldable._
unsafeRun
[
LaserDiscClient
](
c
=>
items
.
traverse_
(
i
=>
c
.
send
(
cmd
.
getbit
(
Key
.
unsafeFrom
(
i
),
PosLong
.
unsafeFrom
(
0L
)))))
}
@Benchmark
def
rediculous
()
:
Unit
=
{
import
cats.implicits._
import
io.chrisdavenport.rediculous._
unsafeRun
[
RediculousClient
](
c
=>
items
.
traverse_
(
i
=>
RedisCommands
.
getbit
[
RedisIO
](
i
,
0L
).
run
(
c
)))
}
@Benchmark
def
redis4cats
()
:
Unit
=
{
import
cats.instances.list._
import
cats.syntax.foldable._
unsafeRun
[
Redis4CatsClient
[
String
]](
c
=>
items
.
traverse_
(
i
=>
c
.
getBit
(
i
,
0L
)))
}
@Benchmark
def
zio
()
:
Unit
=
zioUnsafeRun
(
ZIO
.
foreach_
(
items
)(
i
=>
getBit
(
i
,
0L
)))
}
benchmarks/src/main/scala/zio/redis/IncrBenchmarks.scala
0 → 100644
浏览文件 @
9ac3b003
package
zio.redis
import
java.util.concurrent.TimeUnit
import
org.openjdk.jmh.annotations._
import
zio.ZIO
@State
(
Scope
.
Thread
)
@BenchmarkMode
(
Array
(
Mode
.
Throughput
,
Mode
.
AverageTime
))
@OutputTimeUnit
(
TimeUnit
.
SECONDS
)
@Measurement
(
iterations
=
15
)
@Warmup
(
iterations
=
15
)
@Fork
(
2
)
class
IncrBenchmarks
extends
BenchmarkRuntime
{
@Param
(
Array
(
"500"
))
private
var
count
:
Int
=
_
private
var
items
:
List
[
String
]
=
_
@Setup
(
Level
.
Trial
)
def
setup
()
:
Unit
=
{
items
=
(
0
to
count
).
toList
.
map
(
_
.
toString
)
zioUnsafeRun
(
ZIO
.
foreach_
(
items
)(
i
=>
set
(
i
,
i
)))
}
@Benchmark
def
laserdisc
()
:
Unit
=
{
import
_root_.laserdisc.fs2._
import
_root_.laserdisc.
{
all
=>
cmd
,
_
}
import
cats.instances.list._
import
cats.syntax.foldable._
unsafeRun
[
LaserDiscClient
](
c
=>
items
.
traverse_
(
i
=>
c
.
send
(
cmd
.
incr
[
Long
](
Key
.
unsafeFrom
(
i
)))))
}
@Benchmark
def
rediculous
()
:
Unit
=
{
import
cats.implicits._
import
io.chrisdavenport.rediculous._
unsafeRun
[
RediculousClient
](
c
=>
items
.
traverse_
(
i
=>
RedisCommands
.
append
[
RedisIO
](
i
,
i
).
run
(
c
)))
}
@Benchmark
def
redis4cats
()
:
Unit
=
{
import
cats.instances.list._
import
cats.syntax.foldable._
unsafeRun
[
Redis4CatsClient
[
Long
]](
c
=>
items
.
traverse_
(
i
=>
c
.
incr
(
i
)))
}
@Benchmark
def
zio
()
:
Unit
=
zioUnsafeRun
(
ZIO
.
foreach_
(
items
)(
i
=>
incr
(
i
)))
}
benchmarks/src/main/scala/zio/redis/RedisClients.scala
0 → 100644
浏览文件 @
9ac3b003
package
zio.redis
import
scala.concurrent.ExecutionContext
import
cats.effect.
{
Blocker
,
ContextShift
,
Resource
,
Timer
,
IO
=>
CatsIO
}
import
dev.profunktor.redis4cats.RedisCommands
import
dev.profunktor.redis4cats.data.RedisCodec
import
fs2.io.tcp.SocketGroup
import
io.chrisdavenport.rediculous.
{
Redis
,
RedisConnection
}
import
io.lettuce.core.ClientOptions
import
laserdisc.fs2.RedisClient
trait
RedisClients
{
implicit
val
cs
:
ContextShift
[
CatsIO
]
=
CatsIO
.
contextShift
(
ExecutionContext
.
global
)
implicit
val
timer
:
Timer
[
CatsIO
]
=
CatsIO
.
timer
(
ExecutionContext
.
global
)
final
val
RedisHost
=
"127.0.0.1"
final
val
RedisPort
=
6379
type
RedisIO
[
A
]
=
Redis
[
CatsIO
,
A
]
type
Redis4CatsClient
[
V
]
=
RedisCommands
[
CatsIO
,
String
,
V
]
type
LaserDiscClient
=
RedisClient
[
CatsIO
]
type
RediculousClient
=
RedisConnection
[
CatsIO
]
trait
QueryUnsafeRunner
[
F
]
{
def
unsafeRun
(
f
:
F
=>
CatsIO
[
Unit
])
:
Unit
}
implicit
object
LaserDiscClientRunner
extends
QueryUnsafeRunner
[
LaserDiscClient
]
{
override
def
unsafeRun
(
f
:
LaserDiscClient
=>
CatsIO
[
Unit
])
:
Unit
=
laserDiskConnection
.
use
(
f
).
unsafeRunSync
}
implicit
object
RedicoulusClientRunner
extends
QueryUnsafeRunner
[
RediculousClient
]
{
override
def
unsafeRun
(
f
:
RediculousClient
=>
CatsIO
[
Unit
])
:
Unit
=
redicoulusConnection
.
use
(
f
).
unsafeRunSync
}
implicit
object
Redis4CatsClientRunnerString
extends
QueryUnsafeRunner
[
Redis4CatsClient
[
String
]]
{
override
def
unsafeRun
(
f
:
Redis4CatsClient
[
String
]
=>
CatsIO
[
Unit
])
:
Unit
=
redis4CatsConnectionString
.
use
(
f
).
unsafeRunSync
}
implicit
object
Redis4CatsClientRunnerLong
extends
QueryUnsafeRunner
[
Redis4CatsClient
[
Long
]]
{
override
def
unsafeRun
(
f
:
Redis4CatsClient
[
Long
]
=>
CatsIO
[
Unit
])
:
Unit
=
redis4CatsConnectionLong
.
use
(
f
).
unsafeRunSync
}
private
val
redicoulusConnection
:
Resource
[
CatsIO
,
RediculousClient
]
=
for
{
blocker
<-
Blocker
[
CatsIO
]
sg
<-
SocketGroup
[
CatsIO
](
blocker
)
c
<-
RedisConnection
.
queued
[
CatsIO
](
sg
,
RedisHost
,
RedisPort
,
maxQueued
=
10000
,
workers
=
2
)
}
yield
c
import
_root_.laserdisc.auto.autoRefine
private
val
laserDiskConnection
:
Resource
[
CatsIO
,
LaserDiscClient
]
=
RedisClient
.
to
(
RedisHost
,
RedisPort
)
import
dev.profunktor.redis4cats.Redis
import
dev.profunktor.redis4cats.effect.Log.NoOp.instance
private
val
redis4CatsConnectionString
:
Resource
[
CatsIO
,
RedisCommands
[
CatsIO
,
String
,
String
]]
=
Redis
[
CatsIO
].
utf8
(
s
"redis://$RedisHost:$RedisPort"
)
private
val
redis4CatsConnectionLong
:
Resource
[
CatsIO
,
RedisCommands
[
CatsIO
,
String
,
Long
]]
=
{
import
dev.profunktor.redis4cats.codecs.Codecs
import
dev.profunktor.redis4cats.codecs.splits._
val
longCodec
:
RedisCodec
[
String
,
Long
]
=
Codecs
.
derive
(
RedisCodec
.
Utf8
,
stringLongEpi
)
Redis
[
CatsIO
].
withOptions
(
s
"redis://$RedisHost:$RedisPort"
,
ClientOptions
.
create
(),
longCodec
)
}
}
benchmarks/src/main/scala/zio/redis/
Pu
tBenchmarks.scala
→
benchmarks/src/main/scala/zio/redis/
Se
tBenchmarks.scala
浏览文件 @
9ac3b003
...
...
@@ -5,16 +5,14 @@ import java.util.concurrent.TimeUnit
import
org.openjdk.jmh.annotations._
import
zio.ZIO
import
zio.logging.Logging
@State
(
Scope
.
Thread
)
@BenchmarkMode
(
Array
(
Mode
.
Throughput
))
@BenchmarkMode
(
Array
(
Mode
.
Throughput
,
Mode
.
AverageTime
))
@OutputTimeUnit
(
TimeUnit
.
SECONDS
)
@Measurement
(
iterations
=
15
,
timeUnit
=
TimeUnit
.
SECONDS
,
time
=
3
)
@Warmup
(
iterations
=
15
,
timeUnit
=
TimeUnit
.
SECONDS
,
time
=
3
)
@Fork
(
3
)
class
PutBenchmarks
{
import
BenchmarkRuntime._
@Measurement
(
iterations
=
10
)
@Warmup
(
iterations
=
5
)
@Fork
(
2
)
class
SetBenchmarks
extends
BenchmarkRuntime
{
@Param
(
Array
(
"500"
))
private
var
count
:
Int
=
_
...
...
@@ -27,57 +25,28 @@ class PutBenchmarks {
@Benchmark
def
laserdisc
()
:
Unit
=
{
import
_root_.laserdisc.auto._
import
_root_.laserdisc.fs2._
import
_root_.laserdisc.
{
all
=>
cmd
,
_
}
import
cats.instances.list._
import
cats.syntax.foldable._
RedisClient
.
to
(
RedisHost
,
RedisPort
)
.
use
(
c
=>
items
.
traverse_
(
i
=>
c
.
send
(
cmd
.
set
(
Key
.
unsafeFrom
(
i
),
i
))))
.
unsafeRunSync
unsafeRun
[
LaserDiscClient
](
c
=>
items
.
traverse_
(
i
=>
c
.
send
(
cmd
.
set
(
Key
.
unsafeFrom
(
i
),
i
))))
}
@Benchmark
def
rediculous
()
:
Unit
=
{
import
cats.effect._
import
cats.implicits._
import
fs2.io.tcp._
import
io.chrisdavenport.rediculous._
val
connection
=
for
{
blocker
<-
Blocker
[
IO
]
sg
<-
SocketGroup
[
IO
](
blocker
)
c
<-
RedisConnection
.
queued
[
IO
](
sg
,
RedisHost
,
RedisPort
,
maxQueued
=
10000
,
workers
=
2
)
}
yield
c
connection
.
use
(
c
=>
items
.
traverse_
(
i
=>
RedisCommands
.
set
[
RedisIO
](
i
,
i
).
run
(
c
)))
.
unsafeRunSync
unsafeRun
[
RediculousClient
](
c
=>
items
.
traverse_
(
i
=>
RedisCommands
.
set
[
RedisIO
](
i
,
i
).
run
(
c
)))
}
@Benchmark
def
redis4cats
()
:
Unit
=
{
import
cats.effect.IO
import
cats.instances.list._
import
cats.syntax.foldable._
import
dev.profunktor.redis4cats.Redis
import
dev.profunktor.redis4cats.effect.Log.NoOp._
Redis
[
IO
]
.
utf8
(
s
"redis://$RedisHost:$RedisPort"
)
.
use
(
c
=>
items
.
traverse_
(
i
=>
c
.
set
(
i
,
i
)))
.
unsafeRunSync
unsafeRun
[
Redis4CatsClient
[
String
]](
c
=>
items
.
traverse_
(
i
=>
c
.
set
(
i
,
i
)))
}
@Benchmark
def
zio
()
:
Unit
=
{
val
effect
=
ZIO
.
foreach_
(
items
)(
i
=>
set
(
i
,
i
,
None
,
None
,
None
))
.
provideLayer
(
Logging
.
ignore
>>>
RedisExecutor
.
live
(
RedisHost
,
RedisPort
).
orDie
)
unsafeRun
(
effect
)
}
def
zio
()
:
Unit
=
zioUnsafeRun
(
ZIO
.
foreach_
(
items
)(
i
=>
set
(
i
,
i
)))
}
benchmarks/src/main/scala/zio/redis/StrLenBenchmarks.scala
0 → 100644
浏览文件 @
9ac3b003
package
zio.redis
import
java.util.concurrent.TimeUnit
import
org.openjdk.jmh.annotations._
import
zio.ZIO
@State
(
Scope
.
Thread
)
@BenchmarkMode
(
Array
(
Mode
.
Throughput
,
Mode
.
AverageTime
))
@OutputTimeUnit
(
TimeUnit
.
SECONDS
)
@Measurement
(
iterations
=
15
)
@Warmup
(
iterations
=
15
)
@Fork
(
2
)
class
StrLenBenchmarks
extends
BenchmarkRuntime
{
@Param
(
Array
(
"500"
))
private
var
count
:
Int
=
_
private
var
items
:
List
[
String
]
=
_
@Setup
(
Level
.
Trial
)
def
setup
()
:
Unit
=
{
items
=
(
0
to
count
).
toList
.
map
(
_
.
toString
)
zioUnsafeRun
(
ZIO
.
foreach_
(
items
)(
i
=>
set
(
i
,
i
)))
}
@Benchmark
def
laserdisc
()
:
Unit
=
{
import
_root_.laserdisc.fs2._
import
_root_.laserdisc.
{
all
=>
cmd
,
_
}
import
cats.instances.list._
import
cats.syntax.foldable._
unsafeRun
[
LaserDiscClient
](
c
=>
items
.
traverse_
(
i
=>
c
.
send
(
cmd
.
strlen
(
Key
.
unsafeFrom
(
i
)))))
}
@Benchmark
def
rediculous
()
:
Unit
=
{
import
cats.implicits._
import
io.chrisdavenport.rediculous._
unsafeRun
[
RediculousClient
](
c
=>
items
.
traverse_
(
i
=>
RedisCommands
.
strlen
[
RedisIO
](
i
).
run
(
c
)))
}
@Benchmark
def
redis4cats
()
:
Unit
=
{
import
cats.instances.list._
import
cats.syntax.foldable._
unsafeRun
[
Redis4CatsClient
[
String
]](
c
=>
items
.
traverse_
(
i
=>
c
.
strLen
(
i
)))
}
@Benchmark
def
zio
()
:
Unit
=
zioUnsafeRun
(
ZIO
.
foreach_
(
items
)(
strLen
))
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录