我需要将一些数据编码为 JSON,然后使用 hsyslog 推送到 syslog。两个相关函数的类型是:
Aeson.encode :: a -> Data.ByteString.Lazy.ByteString
System.Posix.Syslog.syslog :: Maybe Facility
-> Priority
-> CStringLen
-> IO ()
转换 a 的最有效方法(速度和内存)是Lazy.ByteString -> CStringLen
什么?我找到Data.ByteString.Unsafe
了,但它只适用于ByteString
,而不是Lazy.ByteString
?
我应该坚持一个unsafeUseAsCStringLen . Data.String.Conv.toS
并收工吗?它会以正确的方式提高效率吗?