草庐IT

回溯——算法

全部标签

xml - XML 解析器/验证器的算法复杂性

我需要了解不同XML工具(解析器、验证器、XPath表达式求值器等)的性能如何受到输入文档的大小和复杂性的影响。是否有资源记录了CPU时间和内存使用情况如何受到……好吧,什么?文档大小(以字节为单位)?节点数?关系是线性的、多项式的还是更糟?更新在IEEEComputerMagazine,第41卷第9期,2008年9月的一篇文章中,作者调查了四种流行的XML解析模型(DOM、SAX、StAX和VTD)。他们运行了一些非常基本的性能测试,这些测试表明当输入文件的大小从1-15KB增加到1-15MB或大约1000倍时,DOM解析器的吞吐量将减半。其他模型的吞吐量没有受到显着影响。遗憾的是,

xml - 将 Delphi 对象树序列化为 XML 的好方法是什么——使用 RTTI 而不是自定义代码?

将Delphi对象树序列化为XML的好方法是什么——使用RTTI而不是自定义代码?我很想发现此功能已经内置到Delphi中,但似乎并没有。我发现了一些似乎可以执行此功能的组件(已在下方发布)。您使用过其中任何一个或其他产品吗?你自己建的吗?我在Delphi中遗漏了什么明显的东西吗? 最佳答案 您可以使用JVCLTJvAppXMLFileStorage组件来序列化TPersistent派生类。usesJvAppXMLStorage;varStorage:TJvAppXMLFileStorage;beginStorage:=TJvApp

xml - 推出您自己的 XML 解析器/XML 解析算法?

因此,作为一个有趣的项目,我决定编写自己的XML解析器。不,不解析特定文档,不,不使用XML解析器库。我的意思是编写代码将任何XML文档解析为可用的数据结构。只是因为我喜欢挑战。:-)话虽如此,到目前为止它被证明是……有趣的。它不像最初看起来那么容易解析(尤其是当您开始考虑特殊字符、CDATA、空标签、注释等时)。是否有任何人知道的任何有据可查的XML解析算法或解释?似乎到处都有记录完备的Queue和Stack以及BTree等等等等的实现,但我不确定我是否见过一个简单的、记录完备的XML解析器算法...我再说一遍:我不是在寻找预构建的解析器库!我正在寻找关于如何创建我自己的预构建解析器

xml - XML 的最佳压缩算法?

我对压缩几乎一无所知,所以请耐心等待(这可能是一个愚蠢而痛苦的明显问题)。假设我有一个带有几个标签的XML文件。text现在假设我的多个XML文件中有一堆非常长的标签和许多属性。我需要将它们压缩到尽可能小的尺寸。最好的方法是使用特定于XML的算法,该算法为各个标签分配假名,如vlt1或vlt2。但是,这不会像我尝试的那样“开放”,我想使用像DEFLATE或LZ这样的通用算法。如果存档是.zip文件,它也会有所帮助。由于我处理的是纯文本(没有像图像这样的二进制文件),所以我想要一种适合纯文本的算法。哪个生成的文件大小最小(首选无损算法)?顺便说一下,场景是这样的:我正在为包含XML文件的

算法为何重要(《数据结构与算法图解》by 杰伊•温格罗)

本文内容借鉴一本我非常喜欢的书——《数据结构与算法图解》。学习之余,我决定把这本书精彩的部分摘录出来与大家分享。 写在前面算法这个词听起来很深奥,其实不然。它只是解决某个问题的一套流程。 准备一碗麦片的流程也可以说是一种算法,它包含以下4步(对我来说是4步吧)。(1)拿个碗。(2)把麦片倒进碗里。(3)把牛奶倒进碗里。(4)把勺子放到碗里。在计算机的世界里,算法则是指某项操作的过程。上一章我们研究了4种主要操作,包括读取、查找、插入和删除。这一章我们还是会经常提到它们,而且一种操作可能会有不止一种做法。也就是说,一种操作会有多种算法的实现。我们很快会看到不同的算法能使代码变快或者变慢——高负载

windows - MS-Windows 调度程序控制(或其他)——在较慢的 CPU 上测试应用程序性能?

是否有一些工具可以控制MS-Windows(在我的例子中是XP-SP332位)调度器,s.t.一个目标应用程序(我想测试),就像在较慢的CPU上运行一样。假设我的物理主机是2.4GHzv双核,但我希望应用程序运行时就像在800MHz/1.0GHzCPU上运行一样。我知道一些这样的程序会让旧的DOS游戏运行得更慢,但是AFAIK,它们采用消耗CPU周期来使应用程序挨饿的方法。我不想要这样的东西,也希望对时钟有更高精度的控制。 最佳答案 我相信您找不到可以直接模拟不同CPU的软件。但是像ProcessLasso这样的东西会让你控制一个程

windows - 在 Windows 上使用 LLVM 作为编译器后端——需要外部工具吗?

我一直在浏览LLVM文档,我不得不询问Windows后端的可用性。他们的examples要在Windows上启动和运行,仍然使用VisualStudio链接器来创建生成的可执行文件。JITexample更简洁,但我需要创建输出PE文件,而不是对进程中的代码进行JIT。我想问的是,是否存在一个LLVM后端,它几乎可以执行从LLVMIR到可执行PE文件的所有必要功能,包括处理从内核导入Win32函数,最好是,也处理COM类型。 最佳答案 遗憾的是没有。LLVM本身不处理任何链接阶段,它只是一个编译器,因此您需要将它与WindowsSDK

c - 在单个 udp 服务器中处理 40 个客户端的可能算法

我正在研究udp服务器/cient应用程序。我希望我的服务器一次能够处理40个客户端。现在我正在使用创建一个接收线程的方法,该线程连续接收数据,并在需要时创建一个发送线程来发送数据。由于套接字队列足够大,可以缓冲来自40个客户端的数据,所以我只使用一个接收线程。实现这种单服务器多客户端的其他可能方法是什么申请? 最佳答案 您当然可以运行多个服务器线程,但每个线程都必须监听不同的UDP端口。如果这对您来说没问题,请尝试使用多个线程,但不要超过您拥有的处理器内核数。由于线程切换,除此之外的任何事情都会减慢整个过程。您可以尝试的另一件事是

c# - COM 对象注册——允许多个?

我有两个具有不同GUID值但名称相同的COM对象。一个是另一个的更新版本。当我使用Name.exe/regserver注册两者时会发生什么?我查看了注册表,它们都显示了相同的ProgID,但它们各自的GUID值不同。它们指向它们在硬盘驱动器上的不同位置。这是个问题吗?我正在尝试让旧版本的项目与新版本的项目一起工作(但不是同时运行),我认为这两者之间存在冲突。COM对象是在VB6中创建的。使用它们的代码是C#。它们作为引用添加到各自的C#项目中。一个注册后,我无法编译另一个(也无法成功运行)。在调查此问题时还有哪些其他信息会有所帮助? 最佳答案

Windows 批处理编程——此时出乎意料

我只是在尝试一些基本的批处理编程。我在执行过程中遇到一些错误set/ax=0:while1if%x%leq5(echo%x%goto:callfun/dir:/Prod/user:admin/pass:anc/level:error>>C:\Logs\A.txtsetfile=C:\Logs\J_FINANCIALS_EVENING.logset/a"cnt=0"for/f%%ain('type"%file%"^|find"!Kitchen.Error.NoRepDefinied!"/i/c')doset/acnt=%%aif%cnt%NEQ0(if%x%NEQ5(DELC:\Logs