我正在开展一个相当简单的(学校)项目.这是一个工作车间调度员.它是单线程的,它具有非常有限的文件I/O(它读取一个小问题描述,然后它开始尝试构建解决方案).CPU应该是瓶颈.没有用户输入/ GUI.
在我的机器上,在发布模式下,没有调试器 - 在3分钟的CPU时间内,我的PC可以针对特定问题生成/评估20,000个不同的计划.
在类似的*nix机器上,使用单声道执行,在3分钟的CPU时间内,服务器设法生成/评估2,000个不同的时间表. 它是速度的十分之一.我比较了我的机器和这个特定服务器之间的Python性能,吞吐量几乎相同.
唯一可以看到不同的"系统"呼叫是呼叫
Process.GetCurrentProcess().TotalProcessorTime.Minutes
Run Code Online (Sandbox Code Playgroud)
但删除它没有任何影响.
我试过用了
--aot -O =全部
它没有任何明显的影响.
我也尝试对它运行单声道探测器,但结果并没有像我希望的那样有用.
Hits % Method name
57542 37.45 /usr/bin/mono
11432 7.44 __lll_unlock_wake in /lib64/libpthread.so.0
6898 4.49 System.Linq.Enumerable:Any<jobshop2.JobTask> (System.Collections.Generic.IEnumerable`1<jobshop2.JobTask>,System.Func`2<jobshop2.JobTask, bool>)
6857 4.46 System.Collections.Generic.List`1/Enumerator<jobshop2.JobTask>:MoveNext ()
3582 2.33 pthread_cond_wait@@GLIBC_2.3.2 in /lib64/libpthread.so.0
2719 1.77 __lll_lock_wait in /lib64/libpthread.so.0
Run Code Online (Sandbox Code Playgroud)
在前六行中 - 我只承认其中两个是我的代码,我可以改进.在完整输出中,我可以在/lib64/libpthread.so.0中看到很多调用,它们似乎处理锁定,解锁,等待,互斥和pthread.我对此感到困惑,因为它不是一个多线程的应用程序.
我正在通过单声道网站上的性能页面,但没有什么是真正的跳出来作为一个问题.我毫不怀疑我的代码是丑陋而缓慢的,但我真的没想到会有如此大的性能下降.我目前正在尝试在我的桌面上安装Linux,以便我可以在同一硬件上以单声道运行我的应用程序以帮助消除该变量 - 但我认为有人可能能够提供一些建议/见解.
编辑:它是版本2.10.8单声道
Mono JIT compiler version 2.10.8 (tarball Sat Feb 16 11:51:56 UTC 2013)
Copyright (C) 2002-2011 Novell, Inc, Xamarin, Inc and Contributors. www.mono-project.com
TLS: __thread
SIGSEGV: …Run Code Online (Sandbox Code Playgroud) 我是WPF的新手,并使用Visual Studio(2015)的设计视图来创建示例应用程序.在设计时,一切看起来都像我想要的:

我发现了一个类似但不完全相同的问题(WPF窗口的运行时视图与Expression Blend的设计视图不匹配),在Blend中创建的布局在运行时不匹配.这个问题(设计模式和运行时的不同外观)但涉及动态资源.
我没有做任何聪明的事情,只是一个网格和控件.我没有用模板修改任何外观.我已经使用了拖放功能,所以我的网格可能有点草率......但我真的希望它能匹配.
难道我做错了什么?设计师与运行时不匹配似乎很疯狂......下面是我的代码.
<Window x:Class="Chap01_01.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:Chap01_01"
mc:Ignorable="d"
Title="Customer" Height="160" Width="350" ShowInTaskbar="true" ResizeMode="NoResize" Topmost="True" WindowStartupLocation="CenterScreen">
<Grid>
<Grid.RowDefinitions>
<RowDefinition Height="35"/>
<RowDefinition Height="35"/>
<RowDefinition Height="25"/>
<RowDefinition Height="100*"/>
</Grid.RowDefinitions>
<Grid.ColumnDefinitions>
<ColumnDefinition Width="87"/>
<ColumnDefinition Width="85"/>
<ColumnDefinition Width="43"/>
<ColumnDefinition Width="35"/>
<ColumnDefinition Width="94"/>
</Grid.ColumnDefinitions>
<Label Content="_First Name" Grid.Column="0" Grid.Row="0" Margin="5,5,5,5" Target="{Binding ElementName=firstName}" VerticalAlignment="Center" />
<TextBox x:Name="firstName" Grid.Column="1" Grid.Row="0" Margin="5,5,5,5" VerticalContentAlignment="Center" Grid.ColumnSpan="4"/>
<Label Content="_Last Name" Grid.Column="0" Grid.Row="1" Margin="5,5,5,5" Target="{Binding ElementName=lastName}" VerticalAlignment="Center" />
<TextBox x:Name="lastName" Grid.Column="1" Grid.Row="1" …Run Code Online (Sandbox Code Playgroud) 我有一个继承自System.Data.DataTable的'MyDataTable'类
我已经在我的类中实现了ISerializable并且有一个'Public Overrides Sub GetObjectData ...'
但是当我尝试序列化'MyDataTable'的对象时,我得到一个错误,说'MyDataTable'没有标记为可序列化.
如果我使用DataTable代替 - 我的代码正确序列化.如果我将一个serializable属性添加到'MyDataTable'类 - 它正确序列化,但我被告知如果我实现ISerializable是不必要的.
有人能指出我正确的方向吗?
如果这是一个愚蠢的问题,请原谅我......但我想回到我的Comp.科学.类和我清楚地记得在几种排序算法和相应的"大O"符号上学习/被测验.
但是,在课堂之外,我从来没有真正编写代码来进行排序.
当我从数据库获得结果时,我使用'Order By'.否则,我使用实现排序的集合类.我已经实现了IComparable以允许排序; 但我从来没有超越过那个.
对于那些没有实现语言/框架的人来说,排序总是只是一种学术追求吗?或者只是在现代硬件上运行的现代语言使它成为一个需要担心的微不足道的细节?
最后,当我在List(Of String)上调用.Sort时,例如,在引擎盖下使用了什么类型的算法?
我正在研究这个问题:如何在不使用.NET中的乘法运算符的情况下实现乘法,并且在不使用*的情况下尝试考虑乘法的方法实际上有很多乐趣.
但是我对这个答案感到很头疼.我不知道这段代码发生了什么.
有人可以向我解释一下吗?
using System;
using System.Runtime.InteropServices;
delegate uint BinaryOp(uint a, uint b);
static class Program
{
[DllImport("kernel32.dll", SetLastError = true)]
static extern bool VirtualProtect(
IntPtr address, IntPtr size, uint protect, out uint oldProtect);
static void Main()
{
var bytes = IntPtr.Size == sizeof(int) ? //32-bit? It's slower BTW
new byte[] {0x8B, 0x44, 0x24, 0x04, 0x0F, 0xAF, 0x44, 0x24, 0x08, 0xC3}
: new byte[] {0x0F, 0xAF, 0xCA, 0x8B, 0xC1, 0xC3};
var handle = GCHandle.Alloc(bytes, GCHandleType.Pinned);
try
{
uint …Run Code Online (Sandbox Code Playgroud) 不确定这是否是一个合适的编程问题; 但是这里......
我写了一个非常简单的附加组件,当某些法术可用时(Overpower/Revenge)显示文本/播放声音.
但我一直无法找到合适的事件来听取检查.我的hack-ish方法是在任何事件传递给我时简单地检查我关心的法术的状态.
我可以使用特定事件吗?我浏览了WoWWiki上的文档,似乎没有找到任何相关内容.
我想在Silverlight中制作一个简单的2D游戏,但是自从我上次尝试使用模式13h图形制作游戏以来,情况似乎发生了变化.有人能给我一个关于你如何去做的破坏.
我的意思是高层次,专注于银光特有的方面; 不是一般的游戏设计.
一个虚构的例子可能是:'主游戏循环不应该是循环,而是使用DispatchTimer.使用Canvas作为主要绘图对象; 但我意识到我们不打算绘制单个像素 - 所有游戏中的对象都应该用控件来表示.一定要将'UseHardwareFlag'设置为true'.等等......
我知道有很多设计模式(外观,单身,装饰等等)但是我正在阅读ASP.NET MVC并且我在"简介"中有两个句子,我已经感到困惑了.
ASP.NET MVC框架提供了用于创建Web应用程序的ASP.NET Web窗体模式的替代方法.
我不明白这意味着什么.我假设ASP.NET MVC将强制或鼓励模型 - 视图 - 控制器模式,但ASP.NET的模式是什么?
可能重复:
生成所有可能的组合
我不确定如何说出这个问题; 但我正在研究一个愚蠢的逻辑谜题,我能够使用LINQ语句解决.相关代码如下所示:
(from myA in Enumerable.Range(1, 40)
from myB in Enumerable.Range(1, 40)
from myC in Enumerable.Range(1, 40)
from myD in Enumerable.Range(1, 40)
where myA + myB + myC + myD == 40
&& myA <= myB
&& myB <= myC
&& myC <= myD
select new[] {myA, myB, myC, myD})
Run Code Online (Sandbox Code Playgroud)
所以它基本上生成满足Where子句中标准的A,B,CD的所有组合.
我现在要做的就是概括这一点,所以我可以用N值而不是四个来做同样的事情.例如,使用3个值 - 等效代码将是:
(from myA in Enumerable.Range(1, 40)
from myB in Enumerable.Range(1, 40)
from myC in Enumerable.Range(1, 40)
where myA + myB + myC == 40
&& …Run Code Online (Sandbox Code Playgroud) 我真正的问题是,“为什么回溯不能加快我的搜索速度?”但我不确定在没有更多上下文的情况下这是否有意义......
\n\n这个问题实际上只是学术问题 - 代码“有效”并且我的程序找到了我期待的解决方案......但我想确保我理解术语。为了帮助说明问题,让我们使用一个需要搜索算法的具体示例 - n-皇后问题。
\n\n\n\n\nn 皇后问题- 将 n 个皇后放在 n\xc3\x97n 棋盘上,使得没有皇后可以攻击另一个皇后。
\n
一种解决方案
\n\n
互联网上有很多示例代码,可以通过搜索“N-皇后回溯”找到,维基百科关于回溯的文章甚至在解释什么是回溯时使用了 N-皇后(http:// en.wikipedia.org/wiki/Backtracking)。据我了解,这个想法是,给定一个无效的棋盘配置 - 假设两个地方皇后可以互相攻击,该算法会忽略通过添加额外棋子而形成的所有棋盘配置。
\n\n我还实现了(非递归/非回溯)深度优先和广度优先版本的搜索。正如预期的那样,两种变体测试的状态数量完全相同。我预计递归的、深度优先的回溯算法应该测试更少的状态。但我没有看到这一点。
\n\nDepth First\n Found 92 solutions in 10.04 seconds\n Tested 118969 nodes (1.2k nodes per second)\n Largest Memory Set was 64 nodes\nBackTracking\n Found 92 solutions in 9.89 seconds\n Tested 118969 nodes (1.2k nodes per second)\n Largest Memory Set was 170 nodes\nBreadth First\n Found 92 solutions in 12.52 …Run Code Online (Sandbox Code Playgroud) c# ×7
.net ×5
vb.net ×3
algorithm ×1
asp.net ×1
asp.net-mvc ×1
combinations ×1
events ×1
linq ×1
lua ×1
mono ×1
performance ×1
python ×1
search ×1
silverlight ×1
sorting ×1
wpf ×1