gpt4 book ai didi

datetime - 在 Protocol Buffer 中使用小数和日期时间的最佳方法是什么?

转载 作者:行者123 更新时间:2023-12-04 04:01:27 24 4
gpt4 key购买 nike

我想找出存储一些未包含在 Protocol Buffer 支持的列表中的常见数据类型的最佳方式。

  • 日期时间(秒精度)
  • 日期时间(毫秒精度)
  • 固定精度的小数
  • 精度可变的小数
  • 很多 bool 值(如果你有很多它们,由于它们的标签,看起来你每个人都会有 1-2 个字节的开销。

  • 同样的想法是将它们非常容易地映射到相应的 C++/Python/Java 数据类型。

    最佳答案

    protobuf 的设计原理最有可能将数据类型支持保持为“ native ”,以便将来可以轻松采用新语言。我想他们可以提供内置消息类型,但你在哪里划线?

    我的解决方案是创建两种消息类型:

    DateTime
    TimeSpan

    这只是因为我来自 C# 背景,这些类型被认为是理所当然的。

    回想起来, TimeSpanDateTime可能有点矫枉过正,但这是一种避免从 h/m/s 转换为 s 的“廉价”方式,反之亦然;也就是说,实现一个效用函数会很简单,例如:
    int TimeUtility::ToSeconds(int h, int m, int s)

    Bklyn,指出堆内存用于嵌套消息;在某些情况下,这显然非常有效——我们应该始终了解内存是如何使用的。但是,在其他情况下,这可能不太重要,我们更担心实现的难易程度(我认为这是 Java/C# 哲学)。

    在 protobuf TextFormat::Printer 中使用非内在类型还有一个小缺点。 ;你不能指定它的显示格式,所以它看起来像:
    my_datetime {
    seconds: 10
    minutes: 25
    hours: 12
    }

    ...这对某些人来说太冗长了。也就是说,如果以秒为单位表示会更难阅读。

    总结 , 我会说:
  • 如果您担心内存/解析效率,请使用秒/毫秒。
  • 但是,如果目标是易于实现,请使用嵌套消息( DateTime 等)。
  • 关于datetime - 在 Protocol Buffer 中使用小数和日期时间的最佳方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1497116/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com