小编Car*_*s00的帖子

C++中xmalloc的正确类比

两个简单的问题:简单地说,C我们经常使用xmalloc哪个是分配或中止例程.我用C++实现了它.这是一个正确的无异常实现吗?

template <typename T>
T *xnew(const size_t n)
{
    T *p = new (std::nothrow) T[n];
    if (p == nullptr)
    {
        cerr << "Not enough memory\n";
        abort();
    }
    return p;
}

int main()
{
    int *p = xnew<int>(5000000000LL);
}
Run Code Online (Sandbox Code Playgroud)

第二个问题,如果我<int>xnew<int>(5000000000LL);调用中删除,编译器(g ++ 4.7.2)不能再推断,[T = int]尽管返回类型int *仍然存在.这是为什么?

编辑:使用new可能抛出异常的版本是否有任何开销,即使它没有被抛出?当我不是绝对必要的时候,我真的不想使用任何例外.

c++

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

使用附加列复制表

如何编写一个PL/SQL程序:

  • 按名称将表给出的表复制到另一个给定的表中(不存在)
  • 向第二个表添加一个ts填充了当前时间戳/日期时间的新列

oracle plsql stored-procedures

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

Haskell三角微基准

考虑这个简单的"基准":

n :: Int
n = 1000
main = do
    print $ length [(a,b,c) | a<-[1..n],b<-[1..n],c<-[1..n],a^2+b^2==c^2]
Run Code Online (Sandbox Code Playgroud)

和适当的C版本:

#include <stdio.h>

int main(void)
{
    int a,b,c, N=1000;
    int cnt = 0;

    for (a=1;a<=N;a++)
        for (b=1;b<=N;b++)
            for (c=1;c<=N;c++)
                if (a*a+b*b==c*c) cnt++;
    printf("%d\n", cnt);
}
Run Code Online (Sandbox Code Playgroud)

汇编:

  • Haskell版本编译为:ghc -O2 triangle.hs(ghc 7.4.1)
  • C版编译为:gcc -O2 -o triangle-c triangle.c(gcc 4.6.3)

运行时间:

  • Haskell:4.308s真实
  • C:1.145s真实

即使对于如此简单且可以很好地优化的程序,Haskell的速度几乎要慢4倍,这是不是很好?Haskell在哪里浪费时间?

haskell ghc

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

压缩SQL Server 2008中的TCP

我们有使用Entity Framework的.NET 4.0应用程序.应用程序通过TCP远程连接到SQL Server.在局域网上,它很快,但在互联网上流量非常高.

我们想做的就是打开一些,TCP compression但看起来SQL Server 2008不提供此功能.

压缩TCP通信的最简单的解决方案是什么?

.net c# sql-server-2008 entity-framework-4

-7
推荐指数
1
解决办法
981
查看次数