小编Ged*_*tis的帖子

单个查询慢于3个查询

我正在使用.NET framework 4.5.1 Linq to SQL.

我首先使用代码生成此产品类:

public class Part
{
    public int PartID { get; set; }

    [Required(ErrorMessage = "xxx")]        
    public string Title { get; set; }

    [MaxLength(50)]
    [Index(IsClustered = false, IsUnique = false,Order =1)]
    public string Part_Number { get; set; }

    [MaxLength(50)]
    [Index(IsClustered = false, IsUnique = false, Order = 2)]
    public string Manufacturer_Number { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我在数据库中有大约250万个这样的实体.

第一种方法

var query = db.Parts.Where(s => s.Manufacturer_Number == sstring).ToList();                
query.AddRange(db.Parts.Where(s => s.Part_Number == sstring).ToList());
query.AddRange(db.Parts.Where(s => s.Title == …
Run Code Online (Sandbox Code Playgroud)

.net c# linq-to-sql

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

在C++ 11中获取当前时间的最快方法是什么?

上下文:我正在编写一个高性能的C++ 11应用程序,其中一部分是删除非活动连接.为此,我在我的连接对象中存储了"最后一个活动"时间戳,我在执行操作时会更新该时间戳.然后我有一个计时器,每隔几秒运行一次,循环遍历所有会话,并删除不活动的计时器.

目前我正在使用此代码获取当前时间戳:

timestamp = duration_cast<milliseconds>(system_clock::now().time_since_epoch()).count()
Run Code Online (Sandbox Code Playgroud)

我想知道是否有更快的方法吗?更快,我的意思是获取时间戳本身的性能,而不是时间戳的分辨率.

对于我的具体应用,分辨率并不重要,它可能会低至一秒钟.此外,utc/local无关紧要,我只使用时间戳将其与其他时间戳进行比较,这是通过相同的方法获得的.

我想保持跨平台,但也欢迎使用条件编译进行特定于平台的优化.

c++ performance time c++11

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

如何使用 Monitor / Mutex / Semaphore 同步 TPL 任务?还是应该完全使用其他东西?

我正在尝试将我的一些旧项目从TPLThreadPool和独立移动Thread到 TPL Task,因为它支持一些非常方便的功能,例如延续 with Task.ContinueWith(以及从 C# 5 with async\await)、更好的取消、异常捕获等。我很想在我的项目中使用它们。但是我已经看到了潜在的问题,主要是同步问题。

我写了一些代码来显示生产者/消费者问题,使用经典的独立Thread

class ThreadSynchronizationTest
{
    private int CurrentNumber { get; set; }
    private object Synchro { get; set; }
    private Queue<int> WaitingNumbers { get; set; }

    public void TestSynchronization()
    {
        Synchro = new object();
        WaitingNumbers = new Queue<int>();

        var producerThread = new Thread(RunProducer);
        var consumerThread = new Thread(RunConsumer);

        producerThread.Start();
        consumerThread.Start();

        producerThread.Join();
        consumerThread.Join();
    }

    private int ProduceNumber()
    {
        CurrentNumber++;
        // Long running method. Sleeping …
Run Code Online (Sandbox Code Playgroud)

.net c# multithreading synchronization task-parallel-library

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

奇怪的 JavaScript 性能依赖于变量范围

在测试一个 JavaScript 项目的性能时,我注意到一种非常奇特的行为 - JavaScript 成员访问性能似乎很大程度上受到它们所在范围的影响。我编写了一些性能测试,结果相差多个数量

我在 Windows 10 64 位上使用以下浏览器进行了测试:

以下是我运行的最相关的测试及其各自的结果:

// Code running on global scope, accessing a variable on global scope
// Google Chrome:   63000 ms.
// Mozilla Firefox: 57000 ms.
// Microsoft Edge:  21000 ms.
var begin = performance.now();
var i;
for(i = 0; i < 100000000; i++) { …
Run Code Online (Sandbox Code Playgroud)

javascript performance scope

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

WebApi 中的默认 HTTP 动词是什么?获取还是发布?

只是古玩。我正在查看互联网上的一个网络项目。

而代码流程是这样的:

[RoutePrefix("/person")]
public class PersonController : ApiController
{

    //....
    [Route("/register")]
    public IHttpACtionResult RegisterPerson(PersonDto personDto)
    {
        //....
    }
    //....
}
Run Code Online (Sandbox Code Playgroud)

注意到上面的代码了吗?没有[HttpGet()][HttpPost()]指定。然而,上面的代码在GET调用时失败,但对POST调用有效。

任何想法如何解决此方法的 HTTP-Verb ?

注意:我知道如果方法名以GETor开头POST,则相应地通过HTTPGetor调用该方法HTTPPost。但是这里的方法名称以Register....

任何想法这是如何工作的?

.net c# http asp.net-web-api

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

如何让 Boost::asio SSL 服务器同时接受 TLS 1.1 和 TLS 1.2?

我试图让我的 SSL 服务器同时支持 TLS 1.1 和 TLS 1.2,但不支持早期版本。

这是我配置 SSL 上下文的方式:

// Here io is an instance of io_service
boost::asio::ssl::context ctx(io, boost::asio::ssl::context::tlsv12_server);

ctx.use_certificate_chain_file("./certs.pem");
ctx.use_private_key_file("./key.pem", ssl::context::pem);

SSL_CTX_set_cipher_list(ctx.native_handle(), "ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS");

ctx.set_options(boost::asio::ssl::context::default_workarounds
                | boost::asio::ssl::context::no_sslv2
                | boost::asio::ssl::context::no_sslv3
                | boost::asio::ssl::context::no_tlsv1
                | boost::asio::ssl::context::single_dh_use
                | SSL_OP_CIPHER_SERVER_PREFERENCE);

ctx.clear_options(boost::asio::ssl::context::no_tlsv1_1);

// Creating socket:
using ssl_socket = boost::asio::ssl::stream<boost::asio::ip::tcp::socket>;
auto sock = std::make_unique<ssl_socket>(io, ctx);
Run Code Online (Sandbox Code Playgroud)

我什至试图清除该no_tlsv1_1选项,如果它以某种方式被默认设置。即使我将配置减少到:

ctx.use_certificate_chain_file("./certs.pem");
ctx.use_private_key_file("./key.pem", ssl::context::pem);
Run Code Online (Sandbox Code Playgroud)

尝试与 TLS 1.1 客户端连接时,async_handshake回调仍会给出错误代码asio.ssl:336109835, wrong version number。与 TLS 1.2 客户端连接时,一切正常。

如果构建SSL背景下,当我从改变的第二个参数tlsv12_servertlsv11_server然后TLS 1.1的作品不错,但TLS 1.2变为不可用。

我已经尝试过 Boost …

c++ ssl boost openssl boost-asio

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

如果我已经使用Boost,我应该更喜欢Boost还是C++ 11标准库?

在我的项目中,我正在使用boost::asio网络和线程管理.我想使用现代C++的一些功能,例如共享指针.

有两种选择:boost::shared_ptr因为我已经在使用Boost,std::shared_ptr因为我使用的是C++ 11编译器.据我所知,这些基本上是等价的,但它们彼此不相容.

我已经读过我应该更喜欢Boost上的标准库组件,而不是毫无意义地使用外部依赖.但是我仍然会使用Boost(至少直到他们决定将ASIO集成到标准库中),所以我仍然需要依赖.

共享指针只是一个例子,这个问题适用于标准库从升压接管所有功能,如function,bind,thread,等.

鉴于我的情况,这是该功能的首选实现?有没有关于选择的问题,在使用其他Boost或标准库组件时,我需要特别使用Boost或标准库版本?

c++ boost c++11

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

如何正确地将功能强制转换为std?

我最近从Microsoft编译器切换到GCC.在很多事情中,我注意到它std::make_unique变得不可用了.这显然是因为make_unique它不是C++ 11标准的一部分,而且恰好将Microsoft作为扩展包含在内.

我们计划很快转向C++ 14,但同时我写了这个"shim"函数并将其放入std.

namespace std
{
    template<typename T, typename... TArgs>
    unique_ptr<T> make_unique(TArgs&&... args)
    {
        return std::unique_ptr<T>(new T(std::forward<TArgs>(args)...));
    }
}
Run Code Online (Sandbox Code Playgroud)

这解决了gcc上的问题.但是,我认为它会在微软方面引起问题,因为它将是一个重复的定义.

有没有办法将功能正确地填充到std中,这样就不会对不同的编译器/ C++标准造成麻烦?我环顾四周,没有拿出任何东西.对于特定的标准功能,我想也许就像一个包含守卫?

#ifndef MAKE_UNIQUE_DEFINED
#define MAKE_UNIQUE_DEFINED
// Define make_unique
#endif
Run Code Online (Sandbox Code Playgroud)

可悲的是,它似乎std没有定义包含特定功能的警卫.还有什么我可以做的,以使这更正确和编译器/ C++标准不可知?

c++ std

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