我目前正在编写一个具有大量数学计算的应用程序.在某些情况下,这些计算需要快速完成,我们可以处理少量的精度损失,以尽快完成数学计算.另一方面,有时我们要求计算非常精确地完成(并且在两者之间存在用例,我们将实现我们自己的乘法/除法/加法/减法/幂等方式,这更精确,即浮点数*float(或double*double,我知道float是一个糟糕的选择),但比BigDecimal.multiply(BigDecimal)更快......甚至比apfloat而不是BigDecimal更快.
是否有任何现有的库允许抽象这些数字格式,以便抽象出不同的数学方法,或者我是否必须创建自己的数学格式?
我已经开始编写一些东西了,这似乎工作正常,但是如果有一个经过良好测试的库而不是重新发明轮子,我认为会好得多.
已编辑以通过以下评论中的内容澄清情况:
问题是BigDecimal明显慢于double*double等.我们需要能够在精度和速度之间切换.这背后的原因是我们需要能够运行快速测试以进行调试和使用真实世界数据进行交叉检查(这不需要非常准确),但最终模拟(通常需要数天到数周):不可接受调试)将需要高精度.因此需要能够随意切换.
我真的很想知道如何从Bundle->build(ContainerBuilder)方法内部访问服务(如doctrine,twig等).
基本上,问题是我需要一个菜单系统,捆绑包可以添加菜单项,而不需要在某个地方的模板中硬编码.为此,我认为基于服务的菜单可以很好地工作(因此我制作了一个菜单构建器服务,可以在控制器中进行测试).
据我所知,我无法在控制器中执行此操作,因为控制器仅在需要时加载,我将有多个需要添加菜单项的包,无论是否使用它们的控制器.事实上,菜单项在不用于网站导航时更为重要.
我认为它可能与Bundle-> build方法有关.似乎ContainerBuilder->get应该允许我获得服务,但是只有service_container服务(如getServiceIds所示).当我ContainerBuilder->get('service_container')->getServiceIds,再次唯一的服务是service_container.
我现在的想法是,当捆绑包"建立"时,服务不会被加载.
有什么我想念的吗?有些可覆盖的方法,有些事件要听吗?