假设我在Vue.JS中有一个v-model绑定到String数据属性的输入字段,以及一个与该第一个String完全无关的随机数列表.
data: {
input: "",
randoms: []
}
<input type="text" v-model="input">
<p v-for="random in randoms" v-text="random"></p>
Run Code Online (Sandbox Code Playgroud)
当我把两者放在同一个Vue中时,我在输入字段中输入时会看到一个巨大的减速,因为看起来Vue在每个输入事件后重新评估每个列表条目的DOM,尽管它们实际上彼此无关.
https://jsfiddle.net/5jf3fmb8/2/
然而,当我移动v-for到我绑定randoms到道具的子组件时,我没有经历这样的减速
https://jsfiddle.net/j601cja8/1/
有没有一种方法可以在不使用子组件的情况下实现第二小提琴的表现?
我必须为大学编写一个非常简单的控制台程序,它必须测量输入所需的时间.
因此我clock()在前面和fgets()通话后使用.在我的Windows计算机上运行时,它工作得很好.然而,当我在我的朋友Mac-Book和Linux-PC上运行时,它给出了非常小的结果(只有几微秒的时间).
我在所有3 OS上尝试了以下代码:
#include <stdio.h>
#include <time.h>
#include <unistd.h>
void main()
{
clock_t t;
printf("Sleeping for a bit\n");
t = clock();
// Alternatively some fgets(...)
usleep(999999);
t = clock() - t;
printf("Processor time spent: %lf", ((double)t) / CLOCKS_PER_SEC);
}
Run Code Online (Sandbox Code Playgroud)
在Windows上,输出显示1秒(或使用时键入的时间fgets),另外两个操作系统显示的时间不超过0秒.
现在我的问题是为什么clock()在这些操作系统的实现上存在这样的差异.对于Windows来说,当线程处于休眠/等待状态时,时钟似乎仍在滴答作响,但对于Linux和Mac则不然?
编辑:感谢你们到目前为止的答案,所以这只是微软的错误实现.
有人可以回答我的上一个问题:
还有一种方法可以测量我想要使用C标准库在所有3个系统上测量的内容,因为它clock()似乎只在Windows上以这种方式工作吗?
我正在尝试处理一些 *nix 信号并具有以下代码:
// nix = "0.8.0"
extern crate nix;
use nix::sys::signal::{SaFlags, SigAction, sigaction, SIGINT, SigSet};
use nix::sys::signal::SigHandler::Handler;
extern fn interrupted(_:i32) {
println!("Interrupted");
}
fn main() {
let sigact = SigAction::new(Handler(interrupted), SaFlags::empty(), SigSet::thread_get_mask().unwrap());
if let Err(_) = unsafe { sigaction(SIGINT, &sigact) } {
println!("Failed to register handler");
std::process::exit(1);
}
loop {
println!("Hello");
}
}
Run Code Online (Sandbox Code Playgroud)
我认为println!()可以同时调用,但是当我中断时此代码总是出现恐慌
// nix = "0.8.0"
extern crate nix;
use nix::sys::signal::{SaFlags, SigAction, sigaction, SIGINT, SigSet};
use nix::sys::signal::SigHandler::Handler;
extern fn interrupted(_:i32) {
println!("Interrupted");
}
fn main() …Run Code Online (Sandbox Code Playgroud)