go - 如何修复检查切片中最小数字以使用 Golang 进行步幅调度的函数?
问题描述
有一部分工作。每个作业都有一个 Pass 值,stride=large num/tickets,tickets。我正在尝试步幅调整并试图实现以下目标:
- 检查最低通行证
- 如果通过率相等,则改为检查步幅
- 返回最小数
好像我错过了。需要帮助来修复该功能。
我已经测试过:
//size, tickets int, estimated time.Duration
k(t010, 0, 100), // a
k(t010, 0, 50), // b
k(t010, 0, 250), // c
我的代码:
//
func getNewJob....
min := LowestVal(joblist...)
joblist[min].Pass += joblist[min].Stride
return joblist[min]
func LowestVal(theJobs slice) int {
lowest := 100
lowestId := 0
for i := 0; i < len(theJobs); i++ { //200 A
if i != lowestId && theJobs[i].Pass == theJobs[lowestId].Pass {
if theJobs[i].Stride < theJobs[lowestId].Stride {
lowest = theJobs[i].Pass
lowestId = i
continue
}
}
if theJobs[i].Pass < lowest {
lowest = theJobs[i].Pass
lowestId = i
}
}
return lowestId
}
测试结果:
0s C(10ms)(1x) (p= 40,s= 40,t=250)
1ms A(10ms)(1x) (p= 100,s= 100,t=100)
2ms B(10ms)(1x) (p= 200,s= 200,t= 50)
3ms C( 9ms)(1x) (p= 80,s= 40,t=250)
4ms C( 8ms)(1x) (p= 120,s= 40,t=250)
5ms C( 7ms)(1x) (p= 160,s= 40,t=250)
6ms C( 6ms)(1x) (p= 200,s= 40,t=250)
7ms C( 5ms)(1x) (p= 240,s= 40,t=250)
8ms C( 4ms)(1x) (p= 280,s= 40,t=250)
9ms C( 3ms)(1x) (p= 320,s= 40,t=250)
10ms C( 2ms)(1x) (p= 360,s= 40,t=250)
11ms C( 1ms)(1x) (p= 400,s= 40,t=250)
12ms C( 0s)(1x) (p= 440,s= 40,t=250)
13ms C(-1ms)(1x) (p= 480,s= 40,t=250)
14ms Idle
但它应该是:
0s C(10ms)(1x)
1ms A(10ms)(1x)
2ms B(10ms)(1x)
3ms C( 9ms)(1x)
4ms C( 8ms)(1x)
5ms A( 9ms)(1x)
6ms C( 7ms)(1x)
7ms C( 6ms)(1x)
8ms C( 5ms)(1x)
9ms A( 8ms)(1x)
10ms B( 9ms)(1x)
11ms C( 4ms)(1x)
12ms C( 3ms)(1x)
13ms A( 7ms)(1x)
14ms C( 2ms)(1x)
15ms C( 1ms)(1x)
16ms A( 6ms)(1x)
17ms B( 8ms)(1x)
18ms A( 5ms)(1x)
19ms A( 4ms)(1x)
20ms B( 7ms)(1x)
21ms A( 3ms)(1x)
22ms A( 2ms)(1x)
23ms B( 6ms)(1x)
24ms A( 1ms)(1x)
25ms B( 5ms)(1x)
26ms B( 4ms)(1x)
27ms B( 3ms)(1x)
28ms B( 2ms)(1x)
29ms B( 1ms)(1x)
30ms Idle
解决方案
推荐阅读
- git - 在 Git 存储库中保留“硬编码”版本号的最佳方法
- hashmap - 用另一个 HashMap 的内容扩展 HashMap
- java - 使用 Spring 和 Parameterized 运行 JUnit
- c# - 如何手动信任嵌入在我的应用程序中的自签名证书?
- python - 遍历多个数据框并根据特定列执行计算
- angularjs - 如何修复我的代码?angularjs,ejs代码
- angular - 如何在 Angular 5 或更高版本中以编程方式获取 formControlName
- javascript - Javascript 使用 document.onclick 关闭下拉菜单
- firebase - 为什么这个 push() 覆盖而不是添加?
- css - 难以掌握 react 或 CSS 的用法