问题标签 [pointer-aliasing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c++ - 如何正确(但有效地)实现“vector::insert”之类的东西?(指针别名)
考虑这个假设的实现vector
:
问题
我们在这里面临一个微妙的问题:和
有可能引用同一向量中的项目,之后。begin
end
where
例如,如果用户说:
如果It
不是指针类型,那么我们很好。
但我们不知道,所以我们必须检查它[begin, end)
是否引用了向量中已经存在的范围。
但是我们该怎么做呢?根据 C++,如果它们不引用同一个数组,那么指针比较将是未定义的!
因此编译器可能会错误地告诉我们这些项目没有别名,而实际上它们确实如此,从而给我们带来了不必要的 O(n) 减速。
潜在的解决方案和警告
一种解决方案是每次都复制整个向量,以包含新项目,然后丢弃旧副本。
但在上面的例子中,这非常慢,我们复制 1000 个项目只是为了插入 1 个项目,即使我们显然已经有足够的容量。
有没有一种通用的方法来(正确)有效地解决这个问题,即在没有混叠的情况下不会遭受 O(n) 减速?
performance - GCC C99 中指针的严格别名示例,没有性能差异
我试图了解严格混叠对 C99 性能的影响。我的目标是优化矢量点积,这在我的程序中占用了大量时间(分析它!)。我认为混叠可能是问题所在,但以下代码并未显示标准方法和严格混叠版本之间的任何实质性差异,即使向量大小为 1 亿。我还尝试使用局部变量来避免别名,结果相似。
发生了什么?
我在 OSX 10.7.4 上使用 gcc-4.7。结果以微秒为单位。
restrict.c(注意此代码将需要数百 MB RAM):
opengl - 在纹理顶部绘制程序线,避免 glsl 中的混叠
我的目标是在柏油路上画白线。由于道路的特性发生了变化,不可能只有一个纹理同时代表沥青和白线。当前的方法是应用沥青纹理并在其他两个纹理坐标中编码一些信息。在像素着色器中,读取这些坐标,我决定该片段是否应该是白色的。
这会导致高水平的混叠。这就是我想尝试解决的问题。
我一直在改变应用 smothsetp 或线性插值的线条的“白度”。我还根据与相机的距离更改了宽度和颜色。这有点帮助,但在很远的距离,仍然有难看的锯齿线。
你将如何继续这样做?有一个表示平滑白线并访问纹素的纹理会更好吗?我应该实现一个访问相邻纹素的双线性过滤器吗?
c++ - 线性采样高斯模糊质量问题
我最近根据这篇文章实现了一个线性采样高斯模糊:
它通常表现得很好,但似乎文本上有轻微的锯齿和更薄的像素集合。我很困惑是什么原因造成的,这是我的着色器或权重计算的问题,还是使用这种方法的继承缺陷?
我想补充一点,当我定期对每个像素进行采样而不是使用双线性过滤时,我不会遇到这个问题。
非常感谢任何见解。这是我如何计算权重的代码示例:
这是片段着色器(这个着色器还有另一个垂直版本):
这是描述该问题的屏幕截图:
java - setObject() 方法和别名
我有一个 LINE 类,它有两个 POINT 类型的属性(它是一个对象)。
如果我这样说,会不会造成混叠?
或者我是否必须创建一个新对象,如下所示:
提前感谢。
xcode - Cocos2D 中的锯齿状边缘 - 抗锯齿问题?
我们目前正在开发一个涉及图形(由边连接的节点)的游戏,我们希望能够移动节点。我们让节点移动(响应触摸),但是当边缘(用 .png 图像初始化)由于节点移动而重新渲染时,它们看起来是锯齿状的。我们尝试过使用 Aliasing 和 Anti-Aliasing,但无论我们做什么,边缘都是锯齿状的。
这是我们初始化边缘图像的地方(带有图像文件):
这里是我们更新边缘图的地方(使用 nextFrame 方法的后半部分):
我们使用的是 Cocos2D v2.0 和 XCode v4.5。
任何帮助将不胜感激。谢谢!
更新:显示问题的图片:
unity3d - CG:使用 fmod 重复纹理会导致锯齿
我正在Cg
使用Unity3D
.
我正在尝试使用fmod函数沿轴重复纹理(基本上与通过在Material
with中设置纹理比例可以达到的效果相同TextureWrapMode.Repeat
)。
这是fragment shader
可以重现错误的代码:
基本上它似乎可以工作,但它会产生某种与 fmod 函数的 0 相对应的混叠(条形图案)。这是一些屏幕截图:
上图显示了纹理如何正确重复。这是出现的条带混叠模式的放大图:
我试图调试它,但我无法弄清楚到底发生了什么。任何人都可以告诉我问题是什么以及最终如何解决?
编辑:我发现禁用 mipmap 生成可以解决这个问题。顺便说一句,我想使用 mipmap 来避免在距离增加时出现缩小锯齿问题。有人有什么想法吗?
pointers - CUDA 是否支持指针混叠?
我问这个的原因是因为我的代码中有一些奇怪的错误,我怀疑这可能是一些别名问题:
sql-server - 嵌套查询在 2 个不同的 SQL Server 2008 R2 上的不同行为
以下查询在 SQL Server 2008 R2 的两个实例上返回两个不同的结果:
第一台机器给
第二台机器给
我们知道如何通过在子查询中使用显式别名来解决这个问题。但是因为我们经常使用这样的结构,所以这将是一项巨大的工作。所以我们想了解这个问题。
SQL Server 中是否有一个选项可以控制这种行为?
2013/07/22:
DBCC 用户选项;选择@@VERSION;给
和
对于第一台服务器,查询按照我们想要的方式工作。
2013/07/24
它似乎不依赖于服务器,而是依赖于数据库。
服务器:
以下查询:
第一个数据库给出:
第二个数据库给出:
c# - 别名示例,尝试理解这个问题
我尝试了解Aliasing
并遇到这个例子:
第一个Console.WriteLine
和第一个SetX
是 clrea 但为什么之后a3.setX(5)
a2 也改变了?根据声明A a3 = a2
和 SetX 参考a3