- @Frandy.CH
> 用的是-O6的优化选项
gcc 的优化选项最大好象是 O3 吧? - 我在单位的一台安装 openSuse 12.1 (64-bit) 的 Lenovo m4000t 的台式机上运行了一下测试程序,结果如下所示:
ben@m4000t:~/work> gcc -std=c99 -O2 poly.c
ben@m4000t:~/work> ./a.out
0x400640 1.4271e+29 74.740000
ben@m4000t:~/work> ./a.out h
0x400680 1.4271e+29 97.320000 - @Frandy.CH
是这样啊。
是 64-bit 的 Ubuntu 吗?
这个测试程序是个纯粹的 C 程序,使用 gcc 编译就可以了,用不着 g++。 - 上一篇随笔中给出一个例子说明有些算法需要更少的操作,但是反而更慢。本文解释这个反常现象的原因。说明优化程序性能必须对计算机的核心概念有所了解。
- @Frandy.CH
看来我们俩的电脑性能差不多,poly 都跑了大约 107 秒。
请问您用的是什么操作系统?什么 C 编译器?
不打开 C 编译器的优化选项的话,确实有可能秦九韶算法要快些,毕竟秦九韶算法要少算 N 个乘法,大家都不优化,都硬算的话,秦九韶算法就有优势了。 - 本文通过使用直接的算法和秦九韶算法对多项求值,说明了最小化一个计算中的操作数量不一定会提高的性能。
- 博客园 jaxu 园友的以下文章很有参考价值:
还有什么不能做?——细谈在C#中读写Excel系列文章之一 - long double 实际上只需要 10 bytes。
在 32-bit 的 Linux 中分配 12 bytes。
在 64-bit 的 Linux 中分配 16 bytes。
这都是为了对齐字节边界。 - @灵感之源
你讲的就是正文中 算法4、算法5 和 算法6 所做的事情。
算法4没有对 chars 索引,循环判断的时间复杂度是 O(N)
算法5对 chars 拷贝到一个有序数组中,循环判断的时间复杂度是 O(logN)
算法6将 chars 装入到 HashSet 中,循环判断的时间复杂度是 O(1)
另外,对 Url 进行处理只是其中的一个应用,还可能有其他的应用。 - 正文中的算法3有错误,现已改正,参见增加的小节“算法3(正确)”。
- 总之,我建议使用 SQLite 代替 Access,使用 MySQL 或者 PostgreSQL 代替 Microsoft SQL Server 或者 Oracle 数据库。
- @Item
你不是在正文一开头就说了吗:
的确,这些数据库都是大同小异的,SQLite 也一样,很容易学的。
你以前也不是很少用到 Access 数据库吗? - ...";
[/code]
然后在循环中执行:
[code=csharp]
ps[0].Value = id;
// ...
ps[9].Value = amount;
comm.ExecuteNonQuery();
[/code]... - r/>[/code]...
- 4.5。请参见我以前的一篇随笔:浅谈 ZipArchive 类。...
- @自由的生活
ASP.NET MVC 的 MSDN 文档也更新得太慢了吧。我虽然对 ASP.NET MVC 没有研究,但是印象中 ASP.NET MVC 3 也出来好几年了吧?MSDN 上都有 .NET Framework 4.5 Beta 的文档,比如说这个 ZipArchive 类的文档。 - 本文“问题背景”小节的 C# 源程序中使用了 Path.GetInvalidFileNameChars() 方法。
顺便提一句,在我的运行 Windows 操作系统的机器上,Path.GetInvalidFileNameChars().Length 的值是 41。但是在我的运行 Linux 操作系统的机器上,Path.GetInvalidFileNameChars().Length 的值是 2,实际上,这两个值是 '\0' 和 '/'。 - @自由的生活
这个,MSDN 文档应该会有说明吧? - 本文讨论如何实现从字符串中移除一系列字符的算法。共给出九个不同的算法。
static class Tester
{
static void Main()
{
System.Console.WriteLine("!dlrow ,olleH".Reverse());
}
}
[/code]...- @SolidMango
> 如果+feature这种问题是可能会有的,但是一般测试很容易就能发现。
的确如此。
框架的版本升级了,增加特性肯定是必需的。这样就避免不了出现这种问题。所以我们就要留意小心这种问题。一般来说,测试就很容易发现问题。所以测试是很重要的。如果对于复杂的程序,测试虽然能够发现问题,有时要定位问题是由于什么原因造成的不一定就是很容易的。 - amework 2.0,而且也不容易升级到 .NET Framework 4。
> 如果直接从编译后的IL来说,不存在此问题。
就这个测试程序来说,在 .NET Framework 4 中编译后的 exe 文件是无法在 .NET Framework 2.0 中运行的,因为它调用了 .NET Framework 2.0 Base Class Library 中不存在的方法。... - @随风浪迹天涯
谢谢支持。 - 在正文中增加一个“查看 IL 代码”小节。
- 本文讨论同一个 C# 程序在 .NET Framework 2.0 和 .NET Framework 4 中有不同的行为,表现出 .NET Framework 版本间的不兼容性。
- 本文讨论 DbCommand.ExecuteScalar 方法的返回值,这个返回值的类型是 System.Object。主要探讨返回值为 System.DBNull 和 null 的区别。
- 本文通过我最近开发的一个实际项目中遇到的问题,发现 Mono C# compiler 2.10.x 的一个bug,表现为该编译器在编译特定的 C# 程序时会崩溃。而 Microsoft C# 编译器没...










