我的公司在相当性能的关键path上使用redis。 每个请求一个nginx服务器调用一次。 调用本身有几个参数,目前它们是80字节。 这个调用通过networking发送到redis,它将args传递给它已经加载的lua脚本,然后做出决定并返回它。
我的老板认为,为这些参数添加一个额外的32字节的string是相当难以接受的lua脚本中的string硬编码(这是因为其他原因),因为“如果我们在一秒钟内获得50k的请求,这是1.6GB的额外的networking那秒的交通“。 我的直觉是这不是一个问题。 stream量是从一个EC2实例到一个ElastiCache实例,我认为由于数据包是如何工作的,以及请求已经是多less,那么这32个额外的字节在两端的networking堆栈中都不太可能产生显着的处理成本。 我完全错了吗?
性能
整个应用程序的性能完全不受影响。 你可以花很多时间做微观基准testing。 但是,由于您在一个地方增加了一个请求,所以在整个应用程序中可能会产生连锁反应。 只要不增加IP数据包的数量,如果networking延迟很高,性能可能会降到最低。 底线,基准。 在代码中保留选项,以便能够select在运行时使用哪个实现(例如切换选项)。
代码质量
通常有一个高质量的代码更重要的是有扩大你的应用程序的空间,而不是限制自己。 您可以稍后devise一个filter,将最小化,压缩,caching等您的stream量redis,这将有助于您获得更多的速度比一个小的优化。