我目前正在选择一个项目,以便在接下来的8周内完成毕业级编译器课程.我想做一些与优化相关的事情,因为我以前在那个领域没有多少工作,但是该领域的任何事情都是公平的.
你做过的最有趣的编译器相关项目是什么?你从中学到了什么?
编辑:谢谢大家的好建议.我很抱歉没有更新这个问题.
我最终做的项目是在LLVM上进行简单的自动向量化优化.LLVM有矢量类型,但似乎没有任何方法可以在不支持前端的情况下利用它们.此优化将正常标量代码转换为矢量代码.
由于自动矢量化是一个相当难以实现的优化,因此我们尽可能地限制了我们的范围.首先,为了在代码中公开指令级并行性,我们寻找符合我们标准的单块循环,然后将它们展开特定次数,以便它们可以方便地进行矢量化.然后,我们实现了Larsen和Amarasinghe 在利用多媒体指令集开发超级词级并行中所规定的打包算法.
即使是这种优化的简化版本也非常复杂.有很多限制; 例如,您不希望对存在于循环之外的变量进行矢量化,因为程序的其余部分期望它是标量.我们在过去几周里花了很多时间.虽然这个项目很有趣,但我们学到了很多东西.
每隔一段时间,通常当我在UI程序集中停止调试时,我会收到以下错误,这需要重新启动Visual Studio 2008并且这会降低我的工作效率:
错误13无法将文件[UI程序集]复制到[输出目录].该进程无法访问文件[输出目录] [UI程序集],因为它正由另一个进程使用.
重新启动后,我收到此错误:
错误1无法找到元数据文件[RELEASE文件夹中的实用程序功能程序集].
我觉得这真的很奇怪,因为我们从不使用Release配置.
我在Windows Vista上使用VS 2k8 SP1.
我知道这是VS调试器没有通过使用handle实用程序(以前来自Sysinternals)释放其文件句柄.该过程是devenv.exe.
我试过关闭并重新打开解决方案.没工作.只有完整的VS2k8重启才能正常工作.
我已经尝试添加一个预构建事件,按照此处的描述移动文件,但这不起作用,因为Windows无法删除文件的原因与它无法替换它的原因相同:它有一个打开的句柄.
我甚至尝试使用上面描述的handle.exe util手动关闭句柄,然后尝试预构建事件.Visual Studio显然不知道它的句柄已关闭,因为VS构建失败,但handle.exe显示该文件没有打开的文件句柄.
为了记录,这里是我运行的加载项:
我也为此项目使用Developer Express控件,因此也可能与它有关.
如何在C++中转发引用/声明以避免循环头文件引用?
我在头文件中有#ifndef防护,但是内存告诉我我需要这个前向引用的东西 - 我之前使用过的<>但是不记得怎么做.
有没有办法从Windows资源管理器中的特定文件夹中启动PowerShell,例如右键单击文件夹并选择"在此文件夹中打开PowerShell"?
在我第一次每天运行MSBuild时必须将目录更改为我的项目文件夹真的很烦人.
假设您已将文本文件加载到字符串中,并且您希望将所有Unicode转义符转换为字符串内的实际Unicode字符.
例:
"以下是Unicode'\ u2320'中整数字符的上半部分,这是下半部分'\ U2321'."
echo $_POST["name"]; //returns the value a user typed into the "name" field
Run Code Online (Sandbox Code Playgroud)
我希望能够返回密钥的文本.在这个例子中,我想返回文本"name".我可以这样做吗?
我想要所有的疑问
http://mysite.com/something/otherthing?foo=bar&x=y
Run Code Online (Sandbox Code Playgroud)
被重写为
http://mysite.com/something/otherthing.php?foo=bar&x=y
Run Code Online (Sandbox Code Playgroud)
换句话说,只需将.php扩展名设为可选的.
我有一个通用类型为"G"的类
在我的班级模型中,我有
public class DetailElement : ElementDefinition
Run Code Online (Sandbox Code Playgroud)
假设我有这样的方法
public void DoSomething<G>(G generic)
where G : ElementDefinition
{
if (generic is DetailElement)
{
((DetailElement)generic).DescEN = "Hello people"; //line 1
//////
ElementDefinition element = generic;
((DetailElement)element).DescEN = "Hello again"; //line 3
//////
(generic as DetailElement).DescEN = "Howdy"; //line 5
}
else
{
//do other stuff
}
}
Run Code Online (Sandbox Code Playgroud)
编译器报告第1行中的一个错误:
Cannot convert type 'G' to 'DetailElement'
Run Code Online (Sandbox Code Playgroud)
但第3行工作正常.我可以通过执行第5行编写的代码解决此问题.
我想知道的是,为什么编译器报告第1行中的错误而不是第3行中的错误,因为据我所知,它们是相同的.
编辑:恐怕我可能会遗漏一些重要的框架逻辑
edit2:虽然编译器错误的解决方案很重要,但我的问题是编译器为什么在第1行而不是第3行报告错误.
如果我读取或写入文件并收到33或32错误,我想记录一条消息,其中包含打开文件的其他进程的名称.必须有一个Win32 API,我可以使用它来获取此信息.Process Explorer显示它.当然,Process Explorer也有关于内存中所有进程的信息.我宁愿在没有询问所有过程的情况下找到罪魁祸首.
如何创建像http://user.mywebsite.com这样的子域?我必须以某种方式访问htaccess吗?它实际上是否可以通过纯PHP代码创建它,或者我需要使用一些外部脚本 - 服务器端语言?
对于那些回答:那么,如果他们提供某种DNS访问,我应该问我的主机吗?
php ×3
c# ×2
.net ×1
api ×1
arrays ×1
c++ ×1
casting ×1
constraints ×1
file ×1
friendly-url ×1
generics ×1
mod-rewrite ×1
powershell ×1
subdomain ×1
syntax ×1
unicode ×1
url ×1
winapi ×1
windows ×1