如题,我感觉也就第二层数据库查询可以优化下,第三层的打印 api 是易联云,貌似只能一次打印一个。
1
sunjiayao 2021-07-02 10:20:07 +08:00 1
可以弄条动态 sql 吧第一个和第二个循环都搞定
说着玩的。代码有时候繁琐点没啥问题,对逻辑梳理有帮助。如果出现性能问题想要优化就得看具体啥场景了 |
2
JKeita 2021-07-02 10:21:16 +08:00 1
感觉没啥可优化的,还不如这样代码可读性强点。
|
3
chenluo0429 2021-07-02 10:32:23 +08:00 1
第一个没啥优化的,你本来就需要遍历时间和订单的。打印机可以用资源占用的形式去考虑,每次从可用列表里面 pop 一个来使用,使用完 push 回去,而不是每次去搜索可用的。
|
4
zhengfan2016 OP @chenluo0429 打印机是外卖小票的那种,不需要考虑占用问题,主要是下发订单给厨房的人。比如有人点了一个汉堡套餐,有一杯可乐,一个汉堡,一份薯条。那么就会给做汉堡的人,炸薯条的人,做饮料的人的打印机 分别打印这个订单,做汉堡的人得到需要做一个牛肉汉堡的需求,炸薯条的人得知需要炸一份中薯条,以此类推😂
|
5
jmc891205 2021-07-02 11:09:32 +08:00 via iPhone 1
提问,待查询的数据量有大到让你遇到性能瓶颈了吗?
|
6
MaMimi 2021-07-02 11:11:39 +08:00 1
我做法是先循环存 map, 然后取值, 不知道这样是否合适?
|
7
ChoateYao 2021-07-02 11:15:09 +08:00 1
嵌套循环,变成 3 个循环,代码层面只能这么优化。
|
8
finab 2021-07-02 11:23:23 +08:00 1
不要嵌套循环,分成多步
第一步,过滤,一层循环 第二步, 将过滤后的订单拼装查询参数,批量查询订单详情, 一层循环 第三步 ,循环订单,找到合适的打印机,打印订单,一层循环 为订单找打印机也不用循环去找,因为订单类型和打印机类型是固定数量的,可以预先定义一个 map,存放指定订单类型对应的打印机。 |
9
Leviathann 2021-07-02 11:57:40 +08:00 via iPhone 1
就 filter map foreach ?
还是我理解错了 |
10
cpstar 2021-07-02 12:04:31 +08:00 1
又不是 10*10*10——O(n^3),仅是 O(n)而已,无所谓的
|
11
jellybool 2021-07-02 12:54:13 +08:00 1
filter in each?
|
12
yehoshua 2021-07-02 12:58:53 +08:00 via Android 1
这样就可以了,看需求并不是多大数据量处理。无论如何都要遍历一遍的。
还不如从其他方面考虑,比如给每个订单加个打印标识符之类的,每次遍历一遍就可以了。 |
13
zhengfan2016 OP @jmc891205 没,一天 100 多订单,但是领导觉得有必要😂
|