int _ftime64_s(struct __timeb64* tp);使用举例
时间: 2024-11-22 14:46:27 浏览: 39
`int _ftime64_s(struct __timeb64* tp)` 是Windows操作系统中的一个扩展函数,用于获取更精确的时间信息,包括秒和毫秒。与 `ftime` 和 `gettimeofday` 不同,它返回的是64位时间戳,这对于长时间范围内的时间测量更为准确。
下面是一个使用`_ftime64_s` 的简单示例:
```c
#include <windows.h>
#include <stdio.h>
int main() {
struct __timeb64 tp;
if (_ftime64_s(&tp)) {
printf("Timestamp (seconds): %I64d\n", tp.time);
printf("Milliseconds: %I64d\n", tp.millitm * 1000); // Convert milli seconds to milliseconds
}
else {
printf("Failed to get the time.\n");
}
}
// 注意:这个函数只在Windows上可用,其他平台可能不支持或有不同的实现。
```
在这个例子中,`_ftime64_s` 函数接收一个指向 `struct __timeb64` 结构体的指针,该结构包含了时间戳(以秒计)和毫秒数。如果成功获取时间,程序会打印这两个值。
相关问题
base_efron <- function(y_test, y_test_pred) { time = y_test[,1] event = y_test[,2] y_pred = y_test_pred n = length(time) sort_index = order(time, decreasing = F) time = time[sort_index] event = event[sort_index] y_pred = y_pred[sort_index] time_event = time * event unique_ftime = unique(time[event!=0]) m = length(unique_ftime) tie_count = as.numeric(table(time[event!=0])) ind_matrix = matrix(rep(time, times = length(time)), ncol = length(time)) - t(matrix(rep(time, times = length(time)), ncol = length(time))) ind_matrix = (ind_matrix == 0) ind_matrix[ind_matrix == TRUE] = 1 time_count = as.numeric(cumsum(table(time))) ind_matrix = ind_matrix[time_count,] tie_haz = exp(y_pred) * event tie_haz = ind_matrix %*% matrix(tie_haz, ncol = 1) event_index = which(tie_haz!=0) tie_haz = tie_haz[event_index,] cum_haz = (ind_matrix %*% matrix(exp(y_pred), ncol = 1)) cum_haz = rev(cumsum(rev(cum_haz))) cum_haz = cum_haz[event_index] base_haz = c() j = 1 while(j < m+1) { l = tie_count[j] J = seq(from = 0, to = l-1, length.out = l)/l Dm = cum_haz[j] - J*tie_haz[j] Dm = 1/Dm Dm = sum(Dm) base_haz = c(base_haz, Dm) j = j+1 } base_haz = cumsum(base_haz) base_haz_all = unlist( sapply(time, function(x){ if else( sum(unique_ftime <= x) == 0, 0, base_haz[ unique_ftime==max(unique_ftime[which(unique_ftime <= x)])])}), use.names = F) if (length(base_haz_all) < length(time)) { base_haz_all <- c(rep(0, length(time) - length(base_haz_all)), base_haz_all) } return(list(cumhazard = unique(data.frame(hazard=base_haz_all, time = time)), survival = unique(data.frame(surv=exp(-base_haz_all), time = time)))) }改成python代码
def base_efron(y_test, y_test_pred):
time = y_test[:, 0]
event = y_test[:, 1]
y_pred = y_test_pred
n = len(time)
sort_index = np.argsort(time)
time = time[sort_index]
event = event[sort_index]
y_pred = y_pred[sort_index]
time_event = time * event
unique_ftime = np.unique(time[event != 0])
m = len(unique_ftime)
tie_count = np.asarray(np.histogram(time[event != 0])[0])
ind_matrix = np.tile(time, (n, 1)) - np.tile(time, (n, 1)).T
ind_matrix = (ind_matrix == 0).astype(int)
time_count = np.cumsum(np.bincount(time.astype(int)))
ind_matrix = ind_matrix[time_count, :]
tie_haz = np.exp(y_pred) * event
tie_haz = ind_matrix @ tie_haz
event_index = np.where(tie_haz != 0)[0]
tie_haz = tie_haz[event_index]
cum_haz = ind_matrix @ np.exp(y_pred)
cum_haz = np.flip(np.cumsum(np.flip(cum_haz)))
cum_haz = cum_haz[event_index]
base_haz = []
j = 0
while j < m:
l = tie_count[j]
J = np.linspace(0, l-1, l) / l
Dm = cum_haz[j] - J * tie_haz[j]
Dm = 1 / Dm
Dm = np.sum(Dm)
base_haz.append(Dm)
j += 1
base_haz = np.cumsum(base_haz)
base_haz_all = np.zeros_like(time)
for i, x in enumerate(time):
if np.sum(unique_ftime <= x) == 0:
base_haz_all[i] = 0
else:
base_haz_all[i] = base_haz[np.max(np.where(unique_ftime <= x))]
return {'cumhazard': np.unique(np.column_stack((base_haz_all, time)), axis=0),
'survival': np.unique(np.column_stack((np.exp(-base_haz_all), time)), axis=0)}
CREATE TABLE sng_qq_data.qq_adtributor_dimention_rank_info ( `ftime` int comment '日期' , `indicator` string comment '指标' , `rank` int comment '维度排序' , `dimention_type` string comment '维度' , `dimention_value` string comment '维值' , `dimention` string comment '维度_维值' , `pred` double comment '预测值' , `act` double comment '实际值' , `delta` double comment 'diff比例' , `js` double comment '惊奇度' , `explanatorypct` double comment '解释度' , `same_direcition` string comment '是否同向' ) PARTITIONED BY (ftime list) WITH SERDEPROPERTIES ('field.delim' = '|', 'serialization.format' = 'org.apache.hadoop.hive.ql.io.orc.OrcSerde') STORED AS INPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat' OUTPUTFORMAT 'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat' LOCATION 'hdfs://ss-tq-icy-c2-v3/user/tdw/warehouse/sng_qq_data.db/qq_adtributor_dimention_rank_info'
这是一个创建名为 `qq_adtributor_dimention_rank_info` 的 Hive 表的 SQL 语句。该表具有以下列:
- `ftime`:表示日期的整数类型列。
- `indicator`:表示指标的字符串类型列。
- `rank`:表示维度排序的整数类型列。
- `dimention_type`:表示维度类型的字符串类型列。
- `dimention_value`:表示维值的字符串类型列。
- `dimention`:表示维度_维值的字符串类型列。
- `pred`:表示预测值的双精度浮点数类型列。
- `act`:表示实际值的双精度浮点数类型列。
- `delta`:表示 diff 比例的双精度浮点数类型列。
- `js`:表示惊奇度的双精度浮点数类型列。
- `explanatorypct`:表示解释度的双精度浮点数类型列。
- `same_direction`:表示是否同向的字符串类型列。
此外,表使用了分区,分区键为 `ftime` 列,并使用 Orc 格式进行存储。表所在的位置为 `hdfs://ss-tq-icy-c2-v3/user/tdw/warehouse/sng_qq_data.db/qq_adtributor_dimention_rank_info`。
阅读全文
相关推荐
















