小编glo*_*loo的帖子

是否快速复制所有结构的写入?

我知道swift会优化复制写入数组,但它会为所有结构执行此操作吗?例如:

struct Point {
   var x:Float = 0
}

var p1 = Point()
var p2 = p1 //p1 and p2 share the same data under the hood
p2.x += 1 //p2 now has its own copy of the data
Run Code Online (Sandbox Code Playgroud)

value-type copy-on-write swift

23
推荐指数
2
解决办法
4298
查看次数

在 swift 中使用 DispatchWorkItem 有什么好处?

假设我们有以下代码定义了一个连续循环(就像游戏一样):

let queue = DispatchQueue(label: "DemoSerialQueue")
let workItem = DispatchWorkItem{ print("Hello World") }
func gameLoop() {
  queue.async(execute:workItem)
}
Run Code Online (Sandbox Code Playgroud)

上面的代码在速度方面是否比以下代码更有效:

func gameLoop() {
  queue.async{ print("Hello World") }
}
Run Code Online (Sandbox Code Playgroud)

我特别想知道第二种形式是否会在每个循环上分配一个闭包,从而导致性能下降。

parallel-processing optimization swift

19
推荐指数
1
解决办法
8072
查看次数

为什么双重查找比javascript中的单个查找更快?

我在jsperf测试中看到了一些奇怪的行为.这是设置:

var pro={};
pro._x=3;
var q=Object.create(pro);
q.x=3;
q.z={};
q.z.x=3;
Run Code Online (Sandbox Code Playgroud)

然后,我只是查找每个属性q.x,q._xq.z.x.

单个查找q.xq._x预期的原型查找更快.但双重查找q.z.x是最快的.我预计q.z.x会是最慢的,特别是与之相比时q.x.

q.z.x甚至比q.z.这里发生了什么?

javascript jsperf

16
推荐指数
1
解决办法
539
查看次数

吸气功能与直接接入的速度

我最近开始使用更多的getter函数,而不是直接访问,以使我的代码更灵活.我很好奇这个成本在速度方面是多少.假设这earth是一个对象,我们有以下父对象:

var star={}
star.planet=earth
star.getPlanet=function(){
  return this.planet
}
Run Code Online (Sandbox Code Playgroud)

以下两个陈述之间的速度差异是否可以忽略不计?

print(star.planet)
print(star.getPlanet()) 
Run Code Online (Sandbox Code Playgroud)

javascript getter performance

13
推荐指数
1
解决办法
3521
查看次数

密码哈希+盐如何工作

我虽然理解哈希和盐渍密码,但似乎我有一些误解.我正在nodejs中为我的网站创建一个用户帐户系统.

我理解的方式是,当用户创建密码时,我们生成一个随机盐,将其附加到密码然后散列该字符串.我们还可以添加一个工作因子来使哈希缓慢工作并防御暴力攻击.我们将salt与哈希一起存储在我们的数据库中,并验证登录尝试,我们使用存储的salt和尝试的密码重复上述过程(在服务器上),并检查哈希值是否匹配.

似乎bcryptnodejs 中的模块与我对散列的解释不一致.这是来自http://codetheory.in/using-the-node-js-bcrypt-module-to-hash-and-safely-store-passwords/的示例

var salt = bcrypt.genSaltSync(10);
var hash = bcrypt.hashSync("my password", salt);
Run Code Online (Sandbox Code Playgroud)

首先,为什么工作因素应用于盐而不是哈希?如果有人通过暴力攻击他们会运行哈希函数是否正确?哈希不是我们需要慢的函数吗?

我也对bcrypt的验证感到困惑:

bcrypt.compareSync("my password", hash);
Run Code Online (Sandbox Code Playgroud)

我们需要哈希是唯一的,即使两个用户选择相同的密码,这是盐的权利吗?那我们为什么不这样做呢?

bcrypt.compareSync("my password"+salt, hash);
Run Code Online (Sandbox Code Playgroud)

hash salt bcrypt node.js

11
推荐指数
2
解决办法
5731
查看次数

打包与普通数据类型的区别

在金属中a packed_float4和a有float4什么区别?

types swift metal

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

匿名功能存储的效率

假设我创建了一个像这样的对象工厂:

var newObj=function(x){
  var obj=[]
  obj.x=x
  obj.add=function(n){
    return this.x+n
  }
  return obj
}
Run Code Online (Sandbox Code Playgroud)

现在假设我创建了这个对象的数百个实例:

var obj1=newObj(1)
var obj2=newObj(2)
...
Run Code Online (Sandbox Code Playgroud)

每个obj1,obj2,...是否存储了自己的obj.add副本,还是它们都包含对存储在内存中的单个obj.add实例的引用?

谢谢!

javascript performance anonymous-function

7
推荐指数
1
解决办法
111
查看次数

如何在nodejs中实现curl u选项

我正在尝试在节点中实现curl请求。在curl中你可以执行以下POST请求:

curl -v https://api.sandbox.paypal.com/v1/oauth2/token \
  -H "Accept: application/json" \
  -H "Accept-Language: en_US" \
  -u "client_id:client_secret" \
  -d "grant_type=client_credentials"
Run Code Online (Sandbox Code Playgroud)

我了解如何使用节点http模块设置标头并写入数据有效负载,但如何-u client_id:client_secret使用该http模块实现?

curl http node.js

6
推荐指数
1
解决办法
1033
查看次数

swift中的变异结构函数是否会创建一个新的self副本?

我喜欢swift中的值语义,但我担心变异函数的性能.假设我们有以下内容struct

struct Point {
   var x = 0.0
   mutating func add(_ t:Double){
      x += t
   }
}
Run Code Online (Sandbox Code Playgroud)

现在假设我们创建一个Point并将其变异为:

var p = Point()
p.add(1)
Run Code Online (Sandbox Code Playgroud)

现在内存中的现有结构变异,或者被struct替换为新的实例

self = Point(x:self.x+1)
Run Code Online (Sandbox Code Playgroud)

performance struct swift swift-structs

5
推荐指数
2
解决办法
1098
查看次数

如何释放MTLBuffer和MTLTexture

我知道如何创建MTLBuffer和/或MTLTexture但是如何在不再需要这些资源时释放GPU内存?

textures vertex-buffer metal

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