From 739938a251346650671ab2837ee3d429168b20c1 Mon Sep 17 00:00:00 2001 From: XieBiao Date: Tue, 16 Jan 2018 11:47:54 +0800 Subject: [PATCH 1/2] improve performance --- app/controllers/main.go | 34 ++++++++++++++++++++++++++++++---- app/models/helpers.go | 14 ++++++++++++++ 2 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 app/models/helpers.go diff --git a/app/controllers/main.go b/app/controllers/main.go index c82f824..9dbeada 100644 --- a/app/controllers/main.go +++ b/app/controllers/main.go @@ -34,11 +34,24 @@ func (this *MainController) Index() { // 最近执行的日志 logs, _ := models.TaskLogGetList(1, 20) + + // 批量查询task得到taskMap + taskIds := make([]int, 0) + for _, v := range logs { + taskIds = append(taskIds, v.TaskId) + } + taskIds = models.MakeIntSliceUnique(taskIds) + tasks,_ := models.TaskGetList(1, 100, "id__in", taskIds) + var taskMap = map[int]*models.Task{} + for _, task := range tasks { + taskMap[task.Id] = task + } + recentLogs := make([]map[string]interface{}, len(logs)) for k, v := range logs { - task, err := models.TaskGetById(v.TaskId) + task, ok := taskMap[v.TaskId] taskName := "" - if err == nil { + if ok { taskName = task.TaskName } row := make(map[string]interface{}) @@ -54,11 +67,24 @@ func (this *MainController) Index() { // 最近执行失败的日志 logs, _ = models.TaskLogGetList(1, 20, "status__lt", 0) + + // 批量查询task得到taskMap + taskIds = make([]int, 0) + for _, v := range logs { + taskIds = append(taskIds, v.TaskId) + } + taskIds = models.MakeIntSliceUnique(taskIds) + tasks,_ = models.TaskGetList(1, 100, "id__in", taskIds) + taskMap = map[int]*models.Task{} + for _, task := range tasks { + taskMap[task.Id] = task + } + errLogs := make([]map[string]interface{}, len(logs)) for k, v := range logs { - task, err := models.TaskGetById(v.TaskId) + task, ok := taskMap[v.TaskId] taskName := "" - if err == nil { + if ok { taskName = task.TaskName } row := make(map[string]interface{}) diff --git a/app/models/helpers.go b/app/models/helpers.go new file mode 100644 index 0000000..99a0ebf --- /dev/null +++ b/app/models/helpers.go @@ -0,0 +1,14 @@ +package models + +func MakeIntSliceUnique(s []int) []int { + rt := make([]int, 0) + m := map[int]bool{} + ok := false + for _, v := range s { + if _, ok = m[v]; !ok { + rt = append(rt, v) + m[v] = true + } + } + return rt +} From 0c4fc69f22a792611b7d9e077333800aaf4dcc0e Mon Sep 17 00:00:00 2001 From: XieBiao Date: Tue, 16 Jan 2018 13:11:18 +0800 Subject: [PATCH 2/2] ignore idea --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 5e3c261..a3788df 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,4 @@ webcron* bin/ *.tar.gz +.idea/