我想初始化一个这样的数组 -
Const MyArray : Array[0..0] Of TGUID = (IInterface);
Run Code Online (Sandbox Code Playgroud)
但它导致 -
[DCC Error] Test.pas(10): E2010 Incompatible types: 'TGUID' and 'string'
Run Code Online (Sandbox Code Playgroud)
那么看看会发生什么我试过这个 -
Const MyArray : Array[0..0] Of String = (IInterface);
Run Code Online (Sandbox Code Playgroud)
结果就是这个!
[DCC Error] Test.pas(10): E2010 Incompatible types: 'string' and 'TGUID'
Run Code Online (Sandbox Code Playgroud)
多么奇怪!当然,IInterface是一个或另一个,但它似乎顽固地转变为错误的类型.
场景:我需要以数学方式处理超过1.5GB的文本和csv文件.我尝试使用SQL Server Express,但加载信息,即使使用BULK导入也需要很长时间,理想情况下我需要将整个数据集放在内存中,以减少硬盘IO.
有超过120,000,000条记录,但即使我尝试将信息过滤到一列(内存中),我的C#控制台应用程序也消耗~3.5GB内存来处理仅125MB(实际读入700MB)的文本.
似乎GC没有收集对字符串和字符串数组的引用,即使在将所有引用设置为null并使用using关键字封装IDisposable之后也是如此.
我认为罪魁祸首是String.Split()方法,它为每个逗号分隔值创建一个新字符串.
您可能会建议我甚至不应该将不需要的*列读入字符串数组中,但是忽略了这一点:如何将整个数据集放在内存中,以便我可以在C#中并行处理它?
我可以使用复杂的调度算法优化统计算法和协调任务,但这是我在遇到内存问题之前希望做的事情,而不是因为.
我已经包含了一个模拟我的环境的完整控制台应用程序,应该可以帮助复制问题.
任何帮助表示赞赏.提前致谢.
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace InMemProcessingLeak
{
class Program
{
static void Main(string[] args)
{
//Setup Test Environment. Uncomment Once
//15000-20000 files would be more realistic
//InMemoryProcessingLeak.GenerateTestDirectoryFilesAndColumns(3000, 3);
//GC
GC.Collect();
//Demostrate Large Object Memory Allocation Problem (LOMAP)
InMemoryProcessingLeak.SelectColumnFromAllFiles(3000, 2);
}
}
class InMemoryProcessingLeak
{
public static List<string> SelectColumnFromAllFiles(int filesToSelect, int column)
{
List<string> allItems = new List<string>();
int fileCount = filesToSelect;
long fileSize, totalReadSize …Run Code Online (Sandbox Code Playgroud) C++/CLI是非常强大的语言.它是唯一可以无缝组合托管和非托管代码的CLR语言.有多少软件开发人员(在本网站上)使用这种语言?你在什么样的项目中使用它?它是对遗留代码的修改还是原始软件的创建?你能比较旧的Managed C++和新的C++/CLI吗?您如何看待C++/CLI的当前质量和未来?
E Text Editor的作者Alexander Stigsen 正在启动一个雄心勃勃的项目 - 名为Open Company-- 试图将开源软件的文化与商业报酬相结合.
就像我说的那样,它雄心勃勃,但值得称赞,我相信你会同意的.
我对社区的问题是:你会给出什么建议?我认为了解燃烧问题和陷阱是多么有趣.此外,建议的阅读,资源和研究可能是有用的.我已经建议阅读制作开源软件.
编辑:关于E文本编辑器的代码是否是开源的,存在一些争论.要回答这个问题,是它会开放给大家下载和修改,因此这将是开源的.但它仍然是版权,产品本身不会自由分发,因此它不会是OSI定义的 "开源" .
更新:在源现在是在Github上可用的,如果你有兴趣.
我想在Vim/gVim中搜索多个字符串,并以不同的颜色突出显示它们.有没有办法用开箱即用的Vim或插件做到这一点?
有没有办法在C中创建一个原子函数.
我不是在寻找便携式解决方案.(平台寻找 - Win,Linux)
假设我有一个自定义数据类型,如下所示:
public class MyDataType
{
public string SimpleProp1;
public string SimpleProp2;
public List<SomeType> ComplexProp;
}
Run Code Online (Sandbox Code Playgroud)
现在我有一个动态创建的数据绑定控件(即ItemsControl或DataGrid).如何在xaml代码中定义的绑定看起来像访问复杂属性的子属性?我认为应该看起来像这样:
<TextBox Text="{Binding simpleSubProp, path=ComplexProp[0]}" />
Run Code Online (Sandbox Code Playgroud)
要么
<TextBox Text="{Binding path=ComplexProp[0].simpleSubProp}" />
Run Code Online (Sandbox Code Playgroud)
但是这两个都给了我xml解析错误.它应该如何看起来正确?是否有可能以某种方式引用集合属性的特定项目?如果不是,我还有其他选择吗?
编辑,这个场景似乎不够清晰:
我有一个
IEnumberable<MyDataType>
Run Code Online (Sandbox Code Playgroud)
绑定到ItemsControl,在DataTemplate内部我有多个TextBox,需要引用复杂属性List中对象的子属性.
我总是想知道为什么在删除后将指针自动设置为NULL 不是标准的一部分.如果这一点得到解决,那么由于指针无效而导致的许多崩溃都不会发生.但是,我已经说过,我可以想到为什么标准会限制这个:
性能:
额外的指令可能会降低
delete性能.可能是因为
const指针.然后标准可能已经为这个特殊情况做了一些事情我想.
有没有人知道不允许这个的确切原因?
我已连接到一些数据库,只连接一次,但永远不需要再次连接,但是它们会使选择的登录下拉混乱.
如何从SQL Server Management Studio Express 2008中的连接提示重置服务器和登录列表?
c# ×2
.net ×1
atomic ×1
c ×1
c++ ×1
c++-cli ×1
clr ×1
data-binding ×1
delphi ×1
guid ×1
highlighting ×1
iis ×1
interface ×1
memory ×1
open-source ×1
operations ×1
performance ×1
silverlight ×1
sql-server ×1
string ×1
vim ×1
xaml ×1