小编Luk*_*ina的帖子

解析大字符串的最快方法(多线程)

我即将开始一个项目,该项目将获取文本块,将大量数据解析为某种对象,然后可以对其进行序列化、存储和统计/收集数据。这需要尽可能快,因为我需要开始处理 > 10,000,000 个文本块,并且每天将收到 100,000 条。

我在具有 12 个至强核心 + 超线程的系统上运行它。我也可以访问/了解一些关于 CUDA 编程的知识,但对于字符串内容,我认为它不合适。从每个字符串中,我需要解析大量数据,其中一些我知道确切的位置,有些我不知道并且需要使用正则表达式/一些聪明的东西。

所以考虑这样的事情:

object[] parseAll (string [] stringsToParse)
{
     parallel foreach 
          parse( string[n] )
}

object parse(string s)
{
     try to use exact positions / substring etc here instead of regex's
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:

  • 使用正则表达式来 substr 慢多少。
  • .NET 会比其他语言慢得多吗?
  • 我可以做什么样的优化(如果有的话)来最大化并行性。
  • 还有什么我没有考虑过的吗?

谢谢你的帮助!对不起,如果这是冗长的。

c# regex string parallel-processing parsing

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

C#Triple Nested Linq Group

我有一个问题,我已经简化了,并一直在挠头.如果我有一个学生列表,并且我想使用LINQ按Age,Grade和LastName生成一组学生,那么我可以使用嵌套的foreach循环遍历它们,我将如何解决这个问题.这是一些代码:

class Student
    {
        public int Grade;
        public int Age;
        public string LastName;
    }

    public void SomeMethod()
    {
        Student student1 = new Student() { Age = 10, Grade = 100, LastName = "Smith"};
        Student student2 = new Student() { Age = 10, Grade = 90, LastName = "Jones" };
        Student student3 = new Student() { Age = 10, Grade = 50, LastName = "Bob" };
        Student student4 = new Student() { Age = 10, Grade = 100, LastName = "Smith" …
Run Code Online (Sandbox Code Playgroud)

c# linq group-by

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

MSSQL - 将自1970年以来的毫秒转换为datetime2

请考虑以下查询(在MSSQL 2008中):

SELECT dateModified FROM SomeTable;
Run Code Online (Sandbox Code Playgroud)

这将以javascript格式返回浮点数(自1970年以来的毫秒数):

dateModified 
============ 
1301598290687 
1071003581343 
1311951478593
Run Code Online (Sandbox Code Playgroud)

如何在选择中将其转换为datetime2?

sql datetime sql-server-2008

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

C#Socket BeginReceive/EndReceive捕获多条消息

问题:

当我做这样的事情时:

for (int i = 0; i < 100; i++)
{
    SendMessage( sometSocket, i.ToString());
    Thread.Sleep(250); // works with this, doesn't work without
}
Run Code Online (Sandbox Code Playgroud)

无论有没有睡眠,服务器都会记录发送单独的消息.但是,如果没有睡眠,客户端最终会在单个OnDataReceived中接收多条消息,因此客户端将收到以下消息:

0,1,2,34,5,678,9 ......

服务器发送代码:

private void SendMessage(Socket socket, string message)
{
    logger.Info("SendMessage: Preparing to send message:" + message);            

    byte[] byteData = Encoding.ASCII.GetBytes(message);

    if (socket == null) return;
    if (!socket.Connected) return;

    logger.Info("SendMessage: Sending message to non " +
                "null and connected socket with ip:" + socket.RemoteEndPoint);

    // Record this message so unit testing can very this works. …
Run Code Online (Sandbox Code Playgroud)

c# sockets

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

LINQ查询(Group BY)?

考虑以下对象:

public class Address { public string city; public string state; public string country; }
Run Code Online (Sandbox Code Playgroud)

如果我有一个地址列表,我将如何使用LINQ获取城市,州和国家匹配的计数列表.

所以我的结果看起来像这样:

  • "princeton""nj""usa"122
  • "奥斯汀""tx""美国"44
  • "la""ca""usa"1
  • "princton""na""uk"3
  • ....

谢谢!

c# linq

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

ASP.NET MVC 3中的条件布局

因此,使用MVC3中的布局可以说我希望能够在页面级别指定是否显示特定部分,最好的方法是什么.请考虑以下页面:

@{
     ViewBag.Title = "...";
     Layout = "~/Views/Shared/Layout/_Layout.cshtml";
}

@section LetsBeFriends {

}

@section Header {
    ....
}

@section Body {
    ....
}
Run Code Online (Sandbox Code Playgroud)

为了使LetsBeFriends部分成为条件,我已经实现了这样的布局:

@{
        if (IsSectionDefined("LetsBeFriends"))
        {
            @RenderSection("LetsBeFriends")
            @Html.Partial("_LetsBeFriends")
        }
}

@RenderSection("Body")
Run Code Online (Sandbox Code Playgroud)

这看似hacky,因为LetsBeFriends将永远是一个空的部分,它只是决定是否渲染部分的条件.有没有更好的办法?

asp.net-mvc templates

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

收益率长度

有没有办法在不保留计数器变量的情况下从函数中获得收益率返回数例如?

  IEnumerable<someobject> function
  {
      for loop
          yield return something

      int numberreturned = ....
  }
Run Code Online (Sandbox Code Playgroud)

c# yield-return

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

C#Dictionary ContainsKey

我的问题是ContainsKey总是返回false,即使它们已经添加了键并且.Equals的计算结果为true.

我有以下课程:

public class StatisticsFilter 
{
    private String someString1;
    private String someString2;
    .....

    public override string ToString()
    {
        return string.Format("{0}-{1}-{2}-{3}-{4}", someString1, someString2, ...)
    }

    public override bool Equals(object obj)
    {            
        return obj.ToString().Equals(ToString());
    }

    public override int GetHashCode()
    {
        return ToString().GetHashCode();
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我有一个字典,看起来像这样:

private readonly IDictionary<StatisticsFilter, Statistics> _filteredStatisticsDict =
            new Dictionary<StatisticsFilter, Statistics>();

....

{
    // ALWAYS EVALUATES TO FALSE!
    if (_filteredStatisticsDict.ContainsKey(statisticsFilter) == false)
    {
         _filteredStatisticsDict.Add(statisticsFilter, new Statistics());
    }
}
Run Code Online (Sandbox Code Playgroud)

c# dictionary equality containskey

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

C#对于现代Web套接字服务器真的可行吗?

我需要为基于HTML5/Mobile的回合制类型游戏开发一个相当可扩展的套接字服务器.

时间是一个真正的因素,因为我需要在3个月内制作出原型.我在C#方面拥有丰富的(多年)经验,在Node或Erlang中没有经验,我已经将其作为该项目的完美语言.不幸的是,这两种语言都会有很多与它们相关的学习曲线以及代码质量,单元测试,可维护性之类的东西,我将没有经验,所以我认为代码质量很差.

选择使用C#来为这个项目节省开发时间的决定有多糟糕,因为我会遇到更多关于可扩展性和事情的麻烦.

C#是否真的被认为适用于现代Web应用程序套接字服务器?

c# websocket

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