小编use*_*781的帖子

MongoDB - 重新启动服务器后的不同查询执行时间

假设我启动了一个mongo数据库服务器:

mongo --dbpath=/some/path --port=12345 --storageEngine wiredTiger

然后我运行相同的查询10次(忽略第一个,以便它们都在暖缓存上),如下所示:

mongo query1.js

我得到的时间是(通过timemongodb记录器验证):

8137ms 8145ms 8193ms 8091ms 8152ms 8110ms 8182ms 8142ms 8133ms 8098ms

很棒 - 相当一致.所有都在彼此约100毫秒内,这是有道理的.

然后,我以下列任何一种方式关闭服务器:

pkill mongod mongod --dbpath=/some/path --shutdown mongo shutdown.js

其中shutdown.js包括:

db.getSiblingDB('admin').shutdownServer();

然后我使用完全相同的命令重新启动它,我得到以下时间:

8531ms 8492ms 8613ms 8555ms 8538ms 8512ms 8551ms 8511ms 8608ms 8522ms

同样,它们始终在~100ms内,但它们都处于不同的基线.

如果我这样做一次,它可能是周围8.3,8.6,8.9,或在真正之间的任何地方.没有其他用户进程打开(除了那些需要ssh进入机器).

我按如下方式进行了一项实验:

while True: run the query 25 times and record the minimum such runtime shutdown the server and restart it, …

profiling mongodb

16
推荐指数
1
解决办法
689
查看次数

在Grails控制器的操作中使用"get"会导致即使未调用也会执行操作

问题:控制器的动作具有渲染标记而不传入模型.存在以"get"一词开头的动作.

在grails-app /视图/网站/ home.gsp:

homepage
Run Code Online (Sandbox Code Playgroud)

SiteController.groovy:

class SiteController {

    def index() {
        render (view: "home")
    }

    def getTest() {
        render "getTest"
    }

}
Run Code Online (Sandbox Code Playgroud)

该站点在localhost:8080/site上访问,以执行SiteController的索引操作.

预期输出:主页实际输出:getTest主页

如果index的render动作更改为:

render(view: "home", model: [:])
Run Code Online (Sandbox Code Playgroud)

产生预期的输出.

如果在操作名称中的单词get之前添加了一个字符,则会生成预期的输出.

有趣的是,getEA()在IDEA中的颜色编码为紫色.还应该注意的是,如果你有多个方法在开头有单词get,它们都是ALL执行的.

这在Grails 1.3.6中没有发生.这在一个全新的Grails 2.2.2项目中是可重现的,对我来说似乎是个错误.为什么会这样?

grails

6
推荐指数
1
解决办法
759
查看次数

循环做n次没有int i = 0?

对于家庭作业,我不允许使用任何变量,如"int i = 0;" - 只有指针.

问题是我需要做n次 - 比如说10次 - 但我无法找到一种方法来做这个事情n次没有for循环.它正在操作指向整数的指针,它不会被零终止,但是大小总是相同的(比方说10).

有没有办法在不使用整数来控制循环的情况下执行以下操作?

int i;
for (i = 0; i < 10; i++) {
    *(p + i) = 0;
}
Run Code Online (Sandbox Code Playgroud)

c pointers for-loop

0
推荐指数
1
解决办法
1143
查看次数

标签 统计

c ×1

for-loop ×1

grails ×1

mongodb ×1

pointers ×1

profiling ×1