在学习F#时,我偶尔会为了好玩而编写算法的几个变体(具有相同的渐近复杂度)。但最后,我也想要一些洞察力,我想继续使用或改进。
因此,我使用F#交互和#time命令。显而易见的决策标准当然是完成某项任务所需的时间。但我得到了更多的信息,我怀疑这与垃圾收集统计数据有关。但我真的不知道该怎么做。
下面是三种排列算法的一些例子:
> let len = 10
> let last _ = // some way of knowing all have been seen (i.e. counting)
> let a = [|1..len|]
> a |> grayPe
我有WPF窗口与网格控制imageGrid和按钮buttonRefresh。代码是用于测试的,看起来可能有点奇怪。窗口代码:
public partial class MainWindow : Window
{
const int gridWidth = 10;
const int gridHeight = 20;
const int cellWidth = 100;
const int cellHeight = 100;
const int bitmapWidth = 1024;
const int bitmapHeight = 1024;
我已经在F#和Scala上编写了一个列表操作函数来比较性能。为了测试这个函数,我需要初始化一个从1到100000000的列表。
F#:
let l = [1..100000000];;
真实: 00:00:32.954,CPU: 00:00:34.593,GC gen0: 1030,gen1: 520,gen2: 9
这个很管用。
Scala : Scala-J-Xmx2G选项
val l = (1 to 10000000).toList // works
val l = (1 to 100000000).toList // no response long while and final
我为我的游戏服务器开发了一个应用程序。现在,在这个应用程序中,当我按下“连接”时,它会向我的游戏服务器发送数据。的确如此,但问题是,当它发送连接时,它会自动关闭它,我不想关闭它,因为我有一个套接字插件,它在玩家离开游戏后杀死TCP连接。现在在我的本地主机上它工作了,TCP没有“死”,但是在我的vps上它断开了,请有人检查我的代码,看看我是否做错了什么?
Dim p() As Process
Dim gta() As Process
p = Process.GetProcessesB
我有一个简单的代码:
sealed class GenObj
{
~GenObj()
{
Console.WriteLine("In Finalize method");
}
}
public static class Program
{
public static void Main()
{
Console.WriteLine("Maximum generations: " + GC.MaxGeneration);
Object o = new GenObj();
我有一个用VB.NET (.NET 4.5.2)编写的控制台程序,它充当服务。连续循环运行,然后等待MSMQ队列中的消息,并处理该消息。不知怎么的,这个程序有一个严重的内存泄漏。我已经检查了所有代码,并尽我所能使用Using语句,但问题仍然存在。循环次数越多,程序使用的内存就越高,垃圾回收器永远不会回收这些内存。
我最终在我的循环的底部放了一个GC.Collect(),并且能够释放大部分内存。然而,我意识到这是一种糟糕的做法,可能会引发问题。我只是想知道是否有一种方法可以检查GC.Collect()正在删除哪些变量,这样我就可以找到问题的根源?
Do While (True)
'