小编Chr*_* D.的帖子

C#中的内联扩展

我正在为C#中的DirectX 3D引擎开发数学库.我正在使用SlimDX,这是一个奇妙的拼凑和强大的库.SlimDX提供了相当多的数学类,但它们实际上是原生D3DX对象的包装器,所以虽然对象本身非常非常快,但我认为互操作不是因为我的托管C#代码优于它们.

我的具体问题与浮点比较有关.排序规范的方法是定义epsilon值,并将值与浮点值之间的差值进行比较以确定接近度,如下所示:

float Epsilon = 1.0e-6f;
bool FloatEq(float a, float b)
{
  return Math.Abs(a - b) < Epsilon
}
Run Code Online (Sandbox Code Playgroud)

函数调用开销会破坏实际的比较,所以这个简单的函数将在C++中内联,C#编译器会这样做吗?有没有办法告诉C#编译器我想要一个内联方法?

c# performance inlining

8
推荐指数
1
解决办法
579
查看次数

目前有非哈佛架构微控制器吗?

我已经使用过Atmel ATMEGA和ATTINY系列微控制器,并且认为它们相当不错.但我不太喜欢的一件事是它们(以及Microchip PIC uC系列)都是哈佛机器,这意味着我无法真正将外部存储器用于RAM或仅执行闪存.

虽然这种设计有明显的优势,但从技术上讲,使用AVR或PIC进行FORTH这样的操作非常困难.(我知道至少有一个实现,但它不像普通的FORTH那样工作,而且会很快耗尽闪存)

FORTH最初是为交互式机器控制类型系统创建的,需要很大的灵活性,因此Z80或6809之类的东西被用作控制程序执行的微控制器或RAM或其他存储设备.

有没有人知道von Neumman机器的AVR/PIC具有类似复杂性的当前设备(最好是在DIP封装中可用)?

microcontroller von-neumann 8-bit

8
推荐指数
2
解决办法
3456
查看次数

使用INotifyPropertyChanged的WPF绑定不会更新

当我更新它所绑定的属性时,我在更新时似乎遇到严重问题让我的WPF UI更新.这是我的视图模型类定义:

namespace WpfModel
    {
        class AppModel : INotifyPropertyChanged
        {
            private int _count = 7;

        public int Count { get { return _count; } 
        set { _count = value;     OnPropertyChanged("Count"); } }

        public void Increment()
        {
            Count++;
        }

        public event PropertyChangedEventHandler PropertyChanged;

        private void OnPropertyChanged(string prop)
        {
            PropertyChangedEventHandler handler = this.PropertyChanged;

            if (handler != null)
            {
                var e = new PropertyChangedEventArgs("prop");
                handler(this, e);
            }
        }
    };
}
Run Code Online (Sandbox Code Playgroud)

这与我在以下XAML中的简单UI绑定:

<Window x:Class="WpfModel.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:vm="clr-namespace:WpfModel"
        Title="WPF Data Model Demo" Height="128" Width="284" > …
Run Code Online (Sandbox Code Playgroud)

wpf inotifypropertychanged

7
推荐指数
2
解决办法
2万
查看次数

在C#中将字节读入结构

时间换另一个问题.我正在为我的小型3D引擎项目编写MD2加载程序.在我的旧语言(C)中,我可以定义一个结构,然后从打开的文件中直接读取()到结构中.我有一个结构来保存MD2文件中的标题信息,如下所示:

[StructLayout(LayoutKind.Sequential)]
public struct MD2_Header
{
    public int FourCC;
    public int Version;
    public int TextureWidth;
    public int TextureHeight;
    public int FrameSizeInBytes;
    public int NbrTextures;
    public int NbrVertices;
    public int NbrTextureCoords;
    public int NbrTriangles;
    public int NbrOpenGLCmds;
    public int NbrFrames;
    public int TextureOffset;
    public int TexCoordOffset;
    public int TriangleOffset;
    public int FrameOffset;
    public int OpenGLCmdOffset;
    public int EndOffset;
}
Run Code Online (Sandbox Code Playgroud)

在我的读者代码中,我想做的事情如下:

// Suck the MD2 header into a structure, it is 68 bytes long.
Classic.Util.MD2_Header md2hdr = new Classic.Util.MD2_Header();
md2hdr = reader.ReadBytes(sizeof(Classic.Util.MD2_Header)); …
Run Code Online (Sandbox Code Playgroud)

c# file-io struct

6
推荐指数
2
解决办法
2407
查看次数

x86开始执行的地址是什么?

当8086或8088首次上电时,处理器开始执行什么地址?我知道Z80从0开始,6809向FFFF寻找起始地址,但我经常想知道x86是如何开始的.

编辑:

这假设没有BIOS干预.IE如果我有自己的EEPROM启动,它应该放在RAM中以启动机器运行?

x86 assembly

5
推荐指数
1
解决办法
2188
查看次数

浮点 Div/Mul &gt; 比 Add/Sub 慢 30 倍?

我最近读了这篇文章:现代硬件上的浮点与整数计算,并且对我自己的处理器在这个准基准上的性能感到好奇,所以我将代码的两个版本放在一起,一个在 C# 中,一个在 C++ 中(Visual Studio 2010 Express)并对它们进行了优化编译,看看会出现什么结果。我的 C# 版本的输出相当合理:

int add/sub: 350ms
int div/mul: 3469ms
float add/sub: 1007ms
float div/mul: 67493ms
double add/sub: 1914ms
double div/mul: 2766ms
Run Code Online (Sandbox Code Playgroud)

当我编译并运行 C++ 版本时,出现了一些完全不同的东西:

int add/sub: 210.653ms
int div/mul: 2946.58ms
float add/sub: 3022.58ms
float div/mul: 172931ms
double add/sub: 1007.63ms
double div/mul: 74171.9ms
Run Code Online (Sandbox Code Playgroud)

我预计会有一些性能差异,但不会这么大!我不明白为什么 C++ 中的除法/乘法比加法/减法慢得多,而托管 C# 版本更符合我的期望。该函数的C++版本代码如下:

template< typename T> void GenericTest(const char *typestring)
{
    T v = 0;
    T v0 = (T)((rand() % 256) / 16) + 1;
    T v1 …
Run Code Online (Sandbox Code Playgroud)

c# c++ floating-point performance x86

4
推荐指数
1
解决办法
2236
查看次数

如何在Visual Studio 2010中构建64位Visual Basic.NET?

希望这是一个简单的问题,我在某处忽略了一些东西......

我在Windows 7 64位上的VS2010中编写VB.NET的东西.它似乎默认为32位目标构建,如何告诉它制作64位可执行文件?

我去了项目属性 - >编译器 - >高级,但没有看到任何选项.

哦,这是VS2010 Express,要清楚.

vb.net 64-bit visual-studio-2010

3
推荐指数
1
解决办法
3万
查看次数

更改矩形背景以反映WPF中DataContext中的布尔状态

我有一个简单的UI,它在其应用程序模型中调用几个解析和处理例程,通过BackgroundWorkers异步执行它们的工作.当模型代码不起作用时,它会设置一些属性,解析和处理.我的UI中有两个矩形,我想根据这些bool是否设置来改变颜色.窗口DataContext设置为模型,消息列表和UI的其他部分工作正常,我似乎无法弄清楚如何表达我想在XAML中做什么.

这是我的矩形代码的示例:

<Rectangle Height="20" Name="ParsingLamp" Stroke="Black" Width="20" RadiusX="4" RadiusY="4" Fill="Gray">
    <Rectangle.Triggers>
        <Trigger Property="{Binding Path=Parsing}" Value="true">
            <Setter TargetName="ParsingLamp" Property="Fill" Value="LightGreen" />
        </Trigger>
        <Trigger Property="{Binding Path=Parsing}" Value="false">
            <Setter TargetName="ParsingLamp" Property="Fill" Value="Brown" />
        </Trigger>
    </Rectangle.Triggers>
</Rectangle>
Run Code Online (Sandbox Code Playgroud)

我收到一条错误,上面写着"填充成员无效,因为它没有质量类型名称."

也许触发器不是正确的方法来做我想要完成的事情?

c# wpf xaml

0
推荐指数
1
解决办法
1866
查看次数