Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Performance 共享VAL是否会成为性能瓶颈斯卡拉_Performance_Scala_Concurrency - Fatal编程技术网

Performance 共享VAL是否会成为性能瓶颈斯卡拉

Performance 共享VAL是否会成为性能瓶颈斯卡拉,performance,scala,concurrency,Performance,Scala,Concurrency,我们有一段代码,带有一个静态字段val format=DateTimeFormatter.forPattern(“yyyy-MM-dd”) 现在这个格式化程序实例将被并发线程用来解析和打印dateformat.parseDateTime(“2013-09-24”)和format.print(instant)。 我了解到,在Scala中,只要只使用不可变字段,就可以在不考虑并发性的情况下编写代码,但性能如何?如果多个线程使用同一实例,是否会成为瓶颈? 谢谢,您的问题与Java更相关。如果forPa

我们有一段代码,带有一个静态字段
val format=DateTimeFormatter.forPattern(“yyyy-MM-dd”)
现在这个格式化程序实例将被并发线程用来解析和打印date
format.parseDateTime(“2013-09-24”)
format.print(instant)
。 我了解到,在Scala中,只要只使用不可变字段,就可以在不考虑并发性的情况下编写代码,但性能如何?如果多个线程使用同一实例,是否会成为瓶颈?

谢谢,

您的问题与Java更相关。如果
forPattern
方法的实现是线程安全的,那么您可以在多个线程之间共享它,而不会出现任何瓶颈

检查javadoc以查看实现是否是线程安全的。在您的特定情况下,我将假设您正在使用库:

摘录自:

DateTimeFormat是线程安全且不可变的,它返回的格式化程序也是线程安全的

有一个计数器示例,请参见javadoc:

日期格式不同步。建议为每个线程创建单独的格式实例。如果多个线程同时访问一种格式,则必须在外部对其进行同步


使用val仅仅意味着变量引用在其声明后不会更改。请参见

您的问题与Java更相关。如果
forPattern
方法的实现是线程安全的,那么您可以在多个线程之间共享它,而不会出现任何瓶颈

检查javadoc以查看实现是否是线程安全的。在您的特定情况下,我将假设您正在使用库:

摘录自:

DateTimeFormat是线程安全且不可变的,它返回的格式化程序也是线程安全的

有一个计数器示例,请参见javadoc:

日期格式不同步。建议为每个线程创建单独的格式实例。如果多个线程同时访问一种格式,则必须在外部对其进行同步


使用val仅仅意味着变量引用在其声明后不会更改。请看

看起来您对它的解释有误:Scala中的并发非常类似于Java(或任何其他语言),没有什么特别之处。只是它提供了替代库和语法糖,以使它们用更少的锅炉板来完成,更重要的是确保它们安全地完成(例如:akka)

但其他原则,如:对内核数量的依赖、线程池大小、上下文切换等,都必须处理和注意


现在,关于多线程访问的不可变
val
是否会降低性能的问题:我认为不应该有任何错误,也没有数据支持。但我认为性能可能会很好,因为处理器可以缓存它,并且在另一个内核中可以更快地检索相同的对象

看来您对它的解释有误:Scala中的并发非常类似于Java(或任何其他语言),没有什么特别之处。只是它提供了替代库和语法糖,以使它们用更少的锅炉板来完成,更重要的是确保它们安全地完成(例如:akka)

但其他原则,如:对内核数量的依赖、线程池大小、上下文切换等,都必须处理和注意


现在,关于多线程访问的不可变
val
是否会降低性能的问题:我认为不应该有任何错误,也没有数据支持。但我认为性能可能会很好,因为处理器可以缓存它,并且在另一个内核中可以更快地检索相同的对象

我认为共享定义为val的字段没有问题。它更喜欢将这样的静态内容放入scala对象。我认为共享定义为val的字段没有问题。它更喜欢将这样的静态内容放入scala对象。事实上,我使用的是JodaTime,我忘了具体说明你可以在回答中添加一个关于性能问题的旁注吗,这是我问题的第二部分?很难回答性能问题,因为它取决于许多因素。性能是一个广泛的主题。事实上,我正在使用JodaTime,我忘了指定您是否可以在您的回答中添加关于性能问题的旁注,这是我问题的第二部分?很难回答性能问题,因为它取决于许多因素。表演是一门广泛的学科。