小编The*_*ide的帖子

如何为.NET制作并行编译器

Nikhil Kothari的脚本#很可能是我在JavaScript领域看到的最令人惊奇的概念之一已经有一段时间了.这个问题不是关于JavaScript,而是关于.NET运行时中的语言编译.

我一直很感兴趣,使用.NET平台,可以为已经有编译器(如C#)的语言编写编译器,该编译器将从原始编译器生成单独的输出,同时允许原始编译器生成输出在同一构建操作期间使用相同的源,同时引用/使用其他编译器的输出.

我不完全确定我甚至能够很好地理解这个过程以便用正确的细节提出问题,但这是我目前看到这个过程的方式,正如Script#docs中的图表所示.我想过很多涉及复杂语言设计和编译的东西,可以利用这样的概念,我对其他人对这些概念的看法感兴趣.

-

编辑:感谢您的评论,到目前为止; 你的信息本身就非常有趣,我想更多地研究它,但我的问题实际上是关于如何编写我自己的编译器,它可以在同一个源上同时运行使用CLR产生多种不同类型的(可能)相互依赖的输出.脚本#作为一个例子,因为它使用相同的C#源生成JavaScript和汇编,同时使编译的汇编与JavaScript协作.我很好奇在设计这种性质的东西时,各种方法和理论概念是什么.

.net compiler-theory language-design

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

使用db4o进行报告

我过去曾在许多项目中使用db4o取得了很大的成功.随着时间的推移,它似乎已经发生了很大的变化,并且像LINQ这样的现代趋势在每个人的舌头上它再次引起了我的兴趣,特别是现在我知道它开始支持透明的激活和持久性,这引起了我很多兴趣,但是一个朋友当我第一次提到db4o时,向我提出了一个非常好的问题,即使有了现代创新,我仍然不确定如何回答它.

生成报告的最佳/最快/最常用的方法是什么,类似于可以在SQL等平台上有效完成的大型跨表复杂约束报告?我很清楚节省了多少时间,精力和开发时间,甚至许多性能提升,特别是在ORM上,但是一些应用程序需要复杂的报告,我不知道如何使用对象和对象查询表达,我也是关注性能,因为即使在专门为此目的设计的系统上,优化和维护复杂的报告也可能是压倒性的.

-
编辑:

更清楚的是,可以使用对象数据源等将db4o拉入与SqlDataSource等人相同的数据丰富的控件中.我已经在db4o网站上引用了有关将其与ReportViewer一起使用的文档以及建议将数据反规范化到报告数据库中,但这个问题意味着对如何完成查询类型提出了一个概念上的挑战. RDBMS的表现如此之好,以至于他们拥有行业.我喜欢db4o,但我想不出真正有效的方法来报告存在于几种不同类型(或SQL中的表)中的聚合数据,而不会将所有相关对象从数据库中拉出来,激活它们并执行计算在应用程序级代码中.我可能错了,但这似乎无法'

我希望在我们能够聚集在这里的聪明人中,有人知道我没有的东西,或者对未来的实施有创新的想法,可以扩展ODBMS领域.我知道各种ORM实现复杂报告对象的方法,我想知道是否有任何具有这些技术经验的人可能有一些不依赖于我的代码和db4o之外的任何技术的创意(我可以使用单独的SQL服务器).

reporting db4o design-patterns

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

如何使用 ClrMD 正确处理非原始 ClrInstanceField 值?

我有一个托管进程的一些非常大的内存转储,我试图从中获取大量统计信息,并且能够呈现堆上相当深的对象图的交互式视图。想想!do <address>prefer_dml 1在WinDbg中设置与SOS,在那里你可以不断地点击属性,并查看它们的值,只有在比较多的对象更友好的用户界面。

我发现Microsoft.Diagnostics.Runtime (ClrMD) 特别适合这项任务,但我很难处理数组字段,而且我对对象字段有点困惑,我已经做了一些工作更好的。


数组:如果我直接从堆中定位一个带有地址的数组并使用,ClrType.GetArrayLength并且ClrType.GetArrayElementValue一切正常,但是一旦我在另一个对象上挖掘字段,我不确定我从ClrInstanceField.GetValue什么时候得到的值ClrInstanceField.ElementTypeClrElementType.SZArray(我还没有Array在我的对象图中遇到过挖掘,但我也想处理它)。

编辑:我只是决定使用ClrTypeforSystem.UInt64取消引用数组字段(parent address + offset of the array field用于计算存储数组指针的地址),然后我可以像从 EnumerateObjects 获取它一样使用它。我现在在某些不支持该ArrayComponentType属性的数组上遇到了一些困难。我还没有用结构数组进行测试,所以我也想知道这是否是内联结构的 C 风格分配,就像它一样,int[]或者它是否是指向堆上结构的指针数组。Guid[]是我在ArrayComponentType从中获取问题的类型之一。

对象固定(逻辑错误) 随着ClrInstanceField具有TypeClrElementType.Object我得到更好的结果,但仍需要更多一点。首先,在调用后GetFieldValue我得到一个ulong地址(?),我可以ClrInstanceField.Type.Fields很好地使用它,所以我可以看到嵌套对象的字段名称和值。也就是说,我必须考虑多态性,所以我尝试ClrHeap.GetObjectType在同一个地址上使用,它要么返回 NULL,要么返回完全不正确的东西。地址在我的第一个用例中有效,但在第二个用例中无效,这似乎很奇怪。

字符串:已修复(已找到解决方法) 因为我的真实项目已经使用带 SOS 的 DbgEng,我有一种不同的方法可以通过地址轻松获取字符串的值,但是尝试使用ClrInstanceField.GetFieldValue成功返回字符串似乎很奇怪,但是使用完全不准确的结果(一堆奇怪的字符)。也许我做错了? …

.net c# windbg sos clrmd

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