相关疑难解决方法(0)

使用'var'会影响性能吗?

之前我问了一个问题,为什么我看到这么多的例子都使用了这个var关键字并得到了答案,虽然它只是匿名类型所必需的,但它仍然被用来使编写代码"更快"/更容易和"只是因为".

这个链接("C#3.0 - Var不是Objec")之后,我看到它var被编译成IL中的正确类型(你会在中间的文章中看到它).

我的问题是IL代码使用var关键字take 会有多少(如果有的话),如果在任何地方使用它,它是否会接近于对代码性能有可衡量的水平?

c# variables performance var

223
推荐指数
8
解决办法
10万
查看次数

我什么时候应该使用C++ 14自动返回类型扣除?

随着GCC 4.8.0的发布,我们有一个支持自动返回类型推导的编译器,这是C++ 14的一部分.有了-std=c++1y,我可以这样做:

auto foo() { //deduced to be int
    return 5;
}
Run Code Online (Sandbox Code Playgroud)

我的问题是:我应该何时使用此功能?什么时候需要,何时使代码更清洁?

场景1

我能想到的第一个场景是可能的.每个可以用这种方式编写的函数都应该是.这个问题是它可能并不总是使代码更具可读性.

情景2

下一个场景是避免更复杂的返回类型.作为一个很轻的例子:

template<typename T, typename U>
auto add(T t, U u) { //almost deduced as decltype(t + u): decltype(auto) would
    return t + u;
}
Run Code Online (Sandbox Code Playgroud)

我不相信这确实会成为一个问题,虽然我认为在某些情况下明确依赖于参数的返回类型可能更清楚.

场景3

接下来,为了防止冗余:

auto foo() {
    std::vector<std::map<std::pair<int, double>, int>> ret;
    //fill ret in with stuff
    return ret;
}
Run Code Online (Sandbox Code Playgroud)

在C++ 11中,我们有时可以return {5, 6, 7};代替向量,但这并不总是有效,我们需要在函数头和函数体中指定类型.这纯粹是多余的,自动返回类型扣除使我们免于冗余.

场景4

最后,它可以用来代替非常简单的功能:

auto position() {
    return pos_;
}

auto area() {
    return …
Run Code Online (Sandbox Code Playgroud)

c++ return-type-deduction c++14

137
推荐指数
5
解决办法
4万
查看次数

C++ 11自动编译时间还是运行时?

auto a = 10;
Run Code Online (Sandbox Code Playgroud)

当编译器知道aint在编译时还是在运行时?如果在运行时推断类型,是否会影响性能?

谢谢

c++ performance c++11

25
推荐指数
4
解决办法
1万
查看次数

标签 统计

c++ ×2

performance ×2

c# ×1

c++11 ×1

c++14 ×1

return-type-deduction ×1

var ×1

variables ×1