小编Mat*_*olf的帖子

Protobuf-Net的实现能否击败我目前拥有的东西?

我之前发布了一个关于Protobuf-Net的相关但仍然不同的问题,所以这里是:

我想知道是否有人(特别是Marc)可以评论下列哪一项最有可能更快:

(a)我目前将序列化的内置数据类型存储在二进制文件中.具体来说,长(8字节)和2浮点(2x4字节).其中每3个后来组成一个反序列化状态的对象.long类型表示DateTimeTicks以进行查找.我使用二进制搜索来查找数据请求的开始和结束位置.然后,一种方法在一个块(从开始到结束位置)下载数据,知道每个块由许多上述三元组(1个长整数,1个浮点数,1个浮点数)组成,并且每个三元组总是16个字节长.因此,检索到的三元组数总是(endLocation - startLocation)/ 16.然后我迭代检索到的字节数组,反序列化(使用BitConverter)每个内置类型,然后实例化一个由三元组构成的新对象,并将对象存储在列表中以供进一步处理.

(b)做以下事情会更快吗?构建一个单独的文件(或实现一个头),作为查找目的的索引.然后我不会存储内置类型的单个二进制版本,而是使用Protbuf-net来序列化上述对象的列表(= int的三元组,浮点数,浮点数作为对象的源).每个List都包含确切且总是一天的数据(记住,long表示DateTimeTick).显然,每个List的大小都会有所不同,因此我想为索引查找生成另一个文件或标题,因为每个数据读取请求只会请求整天的多天.当我想要检索一天的序列化列表时,我会简单地查找索引,读取字节数组,使用Protobuf-Net反序列化并且已经拥有我的对象列表.我想为什么我要问的是因为我不完全理解protobuf-net中的集合的反序列化是如何工作的.

为了更好地了解数据的大小,每个二进制文件大约3GB,因此包含数百万个序列化对象.每个文件包含大约1000天的数据.每个数据请求可以请求任意数量的当天数据.

您认为原始处理时间更快?我想在可能编写大量代码来实现之前获取一些输入(b),我目前有(a)并且能够在我的机器上每秒处理大约150万个对象(进程=从数据请求到返回的反序列化列表对象).

简介:我问的是二进制数据是否可以更快地读取I/O并使用方法(a)或(b)进行反序列化.

c# collections binary protobuf-net

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

MEF,我可以导出/导入具有多个MetaDataAttribute装饰的类吗?

如何使以下代码有效?它抛出一个错误,说有两个相同名称的元数据属性,但我不明白为什么.

错误消息如下:

System.ComponentModel.Composition.dll中发生未处理的"System.InvalidOperationException"类型异常

附加信息:成员或类型'ConsoleApplication2.DoSomeMagic'包含多个名为'PluginName'的元数据条目.元数据条目可以来自ExportMetadataAttribute,也可以来自自定义元数据属性的属性.删除重复的条目或启用名称为"PluginName"的元数据条目,以允许通过自定义元数据属性上的ExportMetadataAttribute或AttributeUsage.AllowMultiple上的IsMultiple属性进行多个条目.

class Program
{
    static void Main(string[] args)
    {
        var program = new Program();
        program.Test();
    }

    private void Test()
    {
        //Export
        var catalog = new AssemblyCatalog(this.GetType().Assembly);
        var container = new CompositionContainer(catalog);
        container.ComposeParts(this);

        //Import Meta Data
        var import1 = container.GetExports<IMagic1, IPluginAttributeView>().Select(e => new PluginAttribute(e.Metadata));

    }
}

public interface IPluginAttributeView
{
    string PluginName { get; set; }
    string PluginConfigurationName { get; set; }
    string PluginCategory { get; set; }
    Type PluginType { get; set; }
}

[MetadataAttribute]
[AttributeUsage(AttributeTargets.Class, AllowMultiple …
Run Code Online (Sandbox Code Playgroud)

c# dependency-injection mef metadata inversion-of-control

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

在迭代IEnumerable时从集合中删除项目

我有以下代码:

foreach (var bar in dataFromDataFeed.Where(bar => bar.Key < fromTicks
                                                  || bar.Key > toTicks))
{
   dataFromDataFeed.Remove(bar.Key);
}
Run Code Online (Sandbox Code Playgroud)

这是安全还是我需要将IEnumerable转换foreachDictionary<T,U>第一个?

谢谢.

c# iteration ienumerable list

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

单元格模板 Devexpress 中的数据绑定:GridControl 不起作用

我尝试将类对象 StrategySubscription 中的 List 属性 SubscribedSymbols 作为 List 的一部分绑定到 Devexpress GridControl 中特定列的每个单元格中的组合框,但无法使数据绑定正常工作。

自动列生成器工作并将值填充到网格上。所以,我确信数据存在。

我附上了 xaml 代码和数据对象以及当前输出的屏幕截图。

您能帮助使数据绑定正常工作吗?我希望将 SubscribedSymbols 中的字符串集合填充到模板化列中每个单元格的组合框中。

PS:前 3 个网格列和关联单元格绑定得很好,唯一的问题在于将数据绑定到最后一列每个单元格中的组合框。

public class StrategySubscription
    {
        public Guid StrategyId { get; set; }
        public string StrategyName { get; set; }
        public int CapitalAllocation { get; set; }
        public List<string> SubscribedSymbols { get; set; }

        public StrategySubscription(string strategyName, Guid strategyId, int capitalAllocation, List<SymbolSubscription> symbolSubscriptions)
        {
            StrategyName = strategyName;
            StrategyId = strategyId;
            CapitalAllocation = capitalAllocation;
            SubscribedSymbols = symbolSubscriptions.Select(x => x.Symbol.SymbolId).ToList();
            //SubscribedSymbols = …
Run Code Online (Sandbox Code Playgroud)

c# wpf grid devexpress gridcontrol

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

为什么不需要使用ServiceStack Json Serializer从json字符串反序列化的对象的构造函数

我想知道为什么不需要构造函数将json字符串反序列化为.Net / C#类对象实例。令我惊讶的是,根本没有调用构造函数并将其删除,并且反序列化器仍从json字符串创建了一个对象实例。这正常吗?

(我使用ServiceStack的json序列化器)

c# serialization constructor servicestack servicestack-text

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