我有一些JavaScript代码,如下所示:
function statechangedPostQuestion()
{
//alert("statechangedPostQuestion");
if (xmlhttp.readyState==4)
{
var topicId = xmlhttp.responseText;
setTimeout("postinsql(topicId)",4000);
}
}
function postinsql(topicId)
{
//alert(topicId);
}
Run Code Online (Sandbox Code Playgroud)
我得到一个topicId未定义的错误在使用该setTimeout()函数之前,一切正常.
我希望postinsql(topicId)在一段时间后调用我的函数.我该怎么办?
这与此问题有关,假设使用生成器(迭代器)遍历嵌套数组将是迭代元素的最佳选择,只要您不需要存储结果,同时使用重复数组如果你只想平整阵列,串联是最好的.
但是,我决定做一些测试,并实现这个函数(用懒惰和存储形式展平[Any]包含Ints或[Int]s 的数组),结果表明存储的形式更快,即使只是用于迭代元素!这意味着,不知何故,迭代生成器比在内存中构造新数组花费更多的时间,然后迭代它.
令人难以置信的是,它甚至比同一程序的python实现慢约5-70%,随着输入的减少而恶化.斯威夫特是用-O旗帜建造的.
这里有三个测试用例1.小输入,混合; 2.大输入,[Int]显性,3.大输入,Int显性:
let array1: [Any] = [Array(1...100), Array(101...105), 106,
Array(107...111), 112, 113, 114, Array(115...125)]
let array2: [Any] = Array(repeating: Array(1...5), count: 2000)
let array3: [Any] = Array(repeating: 31, count: 10000)
Run Code Online (Sandbox Code Playgroud)
A1 = [list(range(1, 101)), list(range(101, 106)), 106,
list(range(107, 112)), 112, 113, 114, list(range(115, 126))]
A2 = list(range(1, 6)) * 2000
A3 = …Run Code Online (Sandbox Code Playgroud) algorithm ×1
arrays ×1
big-o ×1
callback ×1
generator ×1
javascript ×1
parameters ×1
performance ×1
settimeout ×1
swift ×1