我最近阅读了这篇关于标记为ThreadStatic的字段性能不佳的帖子 - 它们显然比正常的字段访问慢60倍..NET 4的ThreadLocal <T>执行得更好吗?
有没有提供高性能线程专用存储的替代方案?
我正在着手一个将在Google App Engine上托管的项目,并且阅读了几本关于Scala的书籍,它绝对是我想要编写的语言.问题在于选择哪个Web框架......
Lift似乎是一个明显的选择,但除了我没有对它的AJAX/Comet符号变暖之外,它似乎强烈反对有状态服务器,这对App Engine来说并不是好兆头.我意识到Lift 中可以使用无状态调度程序,但这似乎否定了Lift框架的许多功能.
Scala-GWT尚未准备就绪,因此不是一个好的选择.
将Java GWT与Scala混合是可能的,但是否定了Scala的所有优点(即我们回到了大量的样板代码).
我对Spiffy和Scalatra的无保留意见是他们并不是特别成熟.
因此问题是:
是否有一个好的(即相当成熟的)框架可用于Google App Engine(即有状态客户端,无状态服务器),它与scala很好地配合使用?
一段时间以来,主流计算硬件都采用了SIMD指令(MMX,SSE,3D-Now等),最近我们看到AMD将480个流的GPU带入与CPU相同的芯片中.
像F#,Scala和Clojure这样的函数式语言也越来越受欢迎,其中一个共同的吸引力是这些语言中并发编程的容易程度.
是否有任何计划让Java VM或.NET CLR开始提供对并行计算硬件资源的访问,以便功能语言可以成熟以利用硬件?
这看起来好像虚拟机是目前针对高性能计算的瓶颈,与SIMD和GPU的访问获得授权的第三方库和后期编译器(tidepowered.net,OpenTK,ScalaCL,梵天,等等,等等)
有没有人知道微软/甲骨文/开源社区的任何计划/路线图是他们的新硬件和编程范例最新的虚拟机?
有没有充分的理由说明供应商在采用方面如此迟钝?
编辑:
为了解决到目前为止的反馈,GPU编程确实很复杂,并且做错了,会使性能恶化.但众所周知,并行性是计算的未来 - 所以这个问题的关键在于,如果应用程序和硬件之间的运行时不支持它,那么硬件和编程语言无法采用并行范例...为什么我们不在VM供应商的雷达/路线图上看到这个?
我有一个派生自AuthorizationAttribute的自定义属性类,它对控制器操作执行自定义安全性.OnAuthorizationCore方法依赖于各种其他组件(例如DAL)以判断用户是否可以调用操作.
我正在使用Autofac进行依赖注入.ExtensibleActionInvoker声称能够在动作过滤器上执行属性注入.在运行时设置属性的属性(这似乎是一个坏主意)将在一个简单的单元测试中工作,但在繁忙的多线程Web服务器中它肯定会出错,所以这个想法似乎是一种反模式.因此这个问题:
如果我的AuthorizationAttribute依赖于其他组件才能正常工作,那么正确的[架构]模式是什么才能实现这一目标?
即AuthorizationAttribute取决于IUserRepository ...如何应这种关系来解决?
我想要一个可以接受引用或值类型的通用类,并且只执行基于相等性测试的操作.考虑以下:
public class Property<TProp>
where TProp : struct, IEquatable<TProp>
{
public TProp Value;
public void SetValue(ObservableObject owner, TProp value)
{
if (!Value.Equals(value)) // cannot use != on struct constrained TProp
{
// ... set the property
}
}
}
public class ByRefProperty<TProp>
where TProp : class // Dont want to require IEquatable<> on reference type TProp
{
public TProp Value;
public void SetValue(ObservableObject owner, TProp value)
{
if (Value != value)
{
// ... set the property
}
}
} …Run Code Online (Sandbox Code Playgroud) 我正在运行一个针对SQL 2008的相当大的SSIS包 - 我在开发环境(Win7-x64 + SQL-x64-Developer)和生产环境(Server 2008 x64 + SQL Std x64)中获得相同的结果.
症状是初始数据加载在每秒50K到500K记录之间尖叫,但几分钟后速度急剧下降并最终缓慢地爬行.数据库采用简单恢复模型,目标表为空,并且满足最小日志批量插入的所有先决条件.数据流是从RAW输入文件到模式匹配表的简单加载(即没有复杂的数据转换,没有排序,没有查找,没有SCD等)
该问题具有以下品质和弹性:
总结一下,我预计在软件包减速之前,磁盘,CPU或RAM都会耗尽,而不是像SSIS软件包正在午睡.SQL服务器仍然响应其他查询,我找不到任何性能计数器或记录事件背叛问题的原因.
我会非常感激地回答任何合理的答案/建议.
我正在实现代表距离(或长度)的值类型.有一个枚举代表不同的度量单位,例如:
public enum DistanceUnit
{
Millimeter,
Centimeter,
Meter,
Kilometer,
Inch,
Foot,
Yard,
Mile
};
Run Code Online (Sandbox Code Playgroud)
这些测量属于两个系统中的一个 - 公制或英制.由于枚举不支持hierachies,表示这种层次结构的最佳模式是什么?
它是否使用位标志?或者使用两个单独的枚举以及一些方法来关联它们?或者声明静态成员而不是枚举?
给我一些建议?如何你实现这一点?
编辑 - 更多说明:我有几个不可变的结构(由T4生成)代表各种测量:
public struct Meters : IEquatable<Distance>,
IEquatable<Meters>,
IEquatable<Millimeters>, ... IComparable<> etc.. etc..
{
public readonly decimal Value;
...
public static implicit operator Distance (Meters other) {
// Can implicitly cast to Distance
}
}
public struct Millimeters ...
public struct Centimeters ....
Run Code Online (Sandbox Code Playgroud)
...等,以及手动编码的不可变距离,旨在表示任何度量:
public struct Distance : IEquatable<Distance>,
IEquatable<Meters>,
IEquatable<Millimeters>, ...
IFormattable
{
public readonly …Run Code Online (Sandbox Code Playgroud) 有没有一种在.NET中实现固定大小数组的好方法,不需要不安全的代码?
我的目标是创建一个表示固定大小数组的值类型,该数组可以嵌入(作为成员包含在其他类型中) - 即我特别希望避免创建一个数组作为声明它的类型的单独对象.
我意识到.NET的数组实现非常出色并且在CLR/CIL级别得到支持 - 并且真的不想讨论是否只使用数组......这里的探索是否是一个安全的,固定大小的,价值类型的实现是可能的,效率几乎一样好.
在SSAS多维数据集中,如何为非时间维度创建聚合为LastChild的度量?
源数据在任何给定日期都有相同业务记录的许多版本.时间维度的粒度为DATE,而不是秒和毫秒.
事实记录具有时间戳和增量(标识)主键.实际上,我想要的是将度量计算为给定日期所有编辑的最后一个值.
到目前为止,我看到的选项分为两类:
要么
是否有解决这个问题的最佳位置或替代技术?
数据的自然层次结构是:
我竭力要找到所使用的财产继承树(或传承语境)足够的信息DependencyObject和DependencyProperty.
我想使用DependencyProperty典型WPF页面之外的值继承功能,这样对象A就是逻辑父对象B,因此分配给对象A上的属性的值将自动传播到对象B,除非它已在本地set(有点像FlowDirectionWPF中的属性).
如果对象A和对象B是从DependencyObject,并且不是a的子节点UIElement (换句话说,对象A是它自己的根),那么如何建立逻辑树以便DependencyProperty理解B是A的子节点?
该 Hillberg可冻结计谋以及技巧的约什-史密斯的袋子不完全是我要找的.我不希望从现有的元素树检索属性...我要创造我自己的,非可视元素树...即有超过的传承上下文控制.
有谁知道这个知识藏在哪里?