小编Gre*_*rey的帖子

C#:struct构造函数性能

为什么使用构造函数创建结构比直接赋值更慢?在下面的代码中,我使用自定义构造函数获得10秒,而没有使用6秒!纯循环需要5秒钟.自定义构造函数比直接访问慢五倍(!sic).

是否有任何黑客或其他东西加速自定义构造函数?

class Program
{
    public struct Point
    {
        public int x, y;

        public Point(int x, int y)
        {
            this.x = x;
            this.y = y;
        }
    }

    static void Main(string[] args)
    {
        Stopwatch sw = new Stopwatch();

        sw.Start();
        for(int i =0; i < int.MaxValue; i++)
        {
            var a = new Point(i, i);
        }
        sw.Stop();
        Console.WriteLine(sw.ElapsedMilliseconds);

        sw.Restart();
        for (int i = 0; i < int.MaxValue; i++)
        {
            var a = new Point();
            a.x = i;
            a.y = i;
        }
        sw.Stop();
        Console.WriteLine(sw.ElapsedMilliseconds); …
Run Code Online (Sandbox Code Playgroud)

c# constructor struct

5
推荐指数
2
解决办法
436
查看次数

标准 xml 解析器在 Golang 中的性能非常低

我有一个 100Gb 大小的 xml 文件,并使用此代码使用 SAX 方法解析它

file, err := os.Open(filename)
handle(err)
defer file.Close()
buffer := bufio.NewReaderSize(file, 1024*1024*256) // 33554432
decoder := xml.NewDecoder(buffer)
for {
        t, _ := decoder.Token()
        if t == nil {
            break
        }
        switch se := t.(type) {
        case xml.StartElement:
            if se.Name.Local == "House" {
                house := House{}
                err := decoder.DecodeElement(&house, &se)
                handle(err)
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

但是 golang 工作很慢,它似乎是由执行时间和磁盘使用率决定的。我的硬盘能够以大约 100-120 mb/s 的速度读取数据,但 golang 仅使用 10-13 mb/s。为了实验,我用 C# 重写了这段代码:

using (XmlReader reader = XmlReader.Create(filename)
            {
                while (reader.Read())
                { …
Run Code Online (Sandbox Code Playgroud)

c# xml go

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

标签 统计

c# ×2

constructor ×1

go ×1

struct ×1

xml ×1